我读了这一页。没有扩展名的c++头文件我理解这句话的意思是,在引入c++标准之前,名称空间就已经存在了。这不是说名称空间和没有文件扩展名没有关系吗?但是,下面的注释没有提到在iostream.h中使用cout
时如何使用名称空间。
所以我的问题是:
- 名称空间在c++ 98标准引入之前真的存在吗?
- 如果为真,在iostream.h中使用
cout
时如何使用名称空间?
委员会于1993年投票通过将名称空间纳入标准。在那之后不久,大多数编译器都支持它,所以在标准被批准之前,大约有5年的时间。
标题没有扩展发生在同一时间,所以大多数情况下,当你使用iostream.h
,你只是使用cout << foo;
,当你切换到iostream
,你使用std::cout << foo;
。
为了向后兼容,许多编译器在有iostream
之后继续提供iostream.h
一段时间。通常是这样的:
#include <iostream>
using namespace std;
对于许多相当简单的程序来说,这已经足够编译了,但是有些程序进入了旧库代码的黑暗角落(老实说,甚至不是非常黑暗的角落)。
其他编译器有两个完全独立的库,所以iostream.h
包含一个库的声明,iostream
包含另一个库的声明。
名称空间的概念是在90年代引入c++的,但其特性和语法在c++ 98标准中得到了改进
注意iostream.h
头文件不是c++标准库的一部分——它被MS-DOS的Borland编译器的早期版本所使用,对于标准<iostream>
头文件
已经弃用了。cout
对象定义在std
命名空间中的标准<iostream>
头=>这就是为什么要使用它,你必须:
- 限定前缀
std::cout
- 或将std命名空间带入 作用域
namespace std;