bus*_*bug 2 c++ namespaces c++98
我读了这一页。
没有扩展名的 C++ 头文件
我理解该评论是说命名空间甚至在引入 C++ 标准之前就已经存在。那么,该评论不是说命名空间和缺少文件扩展名不相关吗?然而,下面的注释没有提到cout在iostream.h中使用时如何使用命名空间。
所以我的问题是:
cout在 iostream.h 中使用时如何使用命名空间?该委员会于 1993 年投票决定将名称空间纳入该标准。此后不久,大多数编译器都支持它,所以在该标准获得批准之前大约 5 年。
没有扩展名的标头大约在同一时间发生,因此大多数情况下,当您使用时iostream.h,您只是使用cout << foo;,而当您切换到时iostream,您使用std::cout << foo;。
iostream.h为了向后兼容,许多编译器在提供iostream. 通常是这样的:
#include <iostream>
using namespace std;
Run Code Online (Sandbox Code Playgroud)
这足以编译许多相当简单的程序,但会破坏一些进入旧库代码的黑暗角落的内容(老实说,甚至不是非常黑暗的角落)。
但其他编译器有两个完全独立的库,因此iostream.h包含一个和iostream另一个的声明。