C++98标准前是否存在命名空间?iostream.h中cout如何用命名空间?
关于C++命名空间的两个问题解答
1. C++98标准引入前是否真的存在命名空间?
C98是首个正式的C标准,命名空间(namespace)是C++98才被正式纳入标准规范的语法特性。不过在标准出台前,部分编译器厂商为解决名称冲突问题,曾推出过自己的非标准扩展,实现过类似命名空间的功能,但这些都是厂商私有的实现,没有统一规范,也并非所有编译器都支持。严格来说,标准层面的命名空间是C++98才有的,预标准时期只有厂商自定义的类似机制。
2. 若存在,在iostream.h中使用cout时如何使用命名空间?
旧的<iostream.h>这类带.h后缀的头文件,是C++标准出台前编译器提供的头文件,里面的cout、cin等标识符全部定义在全局命名空间中,完全不需要加命名空间前缀。
C++98标准推出后,标准头文件去掉了.h后缀(比如<iostream>),同时把所有标准库标识符都放到了std命名空间里。而旧的.h头文件是为兼容老代码保留的,它们的实现里并没有使用标准的命名空间机制,直接调用全局域的标识符即可,示例代码如下:
#include <iostream.h> int main() { cout << "Hello"; // 直接使用,无需加std::前缀 return 0; }
内容的提问来源于stack exchange,提问作者busbug
相关产品推荐
相关产品推荐

