请教c语言和C++的命名空间问题

[复制链接]
查看11 | 回复4 | 2017-9-7 08:39:29 | 显示全部楼层 |阅读模式
从技术上说,其实没有这样的东西——标准化委员会在简化非C标准头文件时用取代了它。必须知道的是,如果编译器同时支持 ,那头文件名的使用会很微妙。例如,如果使用了#include , 得到的是置于名字空间std下的iostream库的元素;如果使用#include ,得到的是置于全局空间的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。iostream 里的所有内容被封装在 std 命名空间内,iostream.h 里的则没有,所以,如...
回复

使用道具 举报

千问 | 2017-9-7 08:39:29 | 显示全部楼层
前者是C++的标准语法,后者是C的语法规则,C++对C是部分兼容的,所以前者一定能通过,后者可能会通过...
回复

使用道具 举报

千问 | 2017-9-7 08:39:29 | 显示全部楼层
iostream.h是在旧的标准C++中使用,没有定义std命名空间。现在Visual C++和GCC早就已经不支持这种使用方法了。...
回复

使用道具 举报

千问 | 2017-9-7 08:39:29 | 显示全部楼层
iostream和iostream.h的区别前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行