最近刚刚又开始看C++的教材。发现自己确实学的不认真,许多东西指到现在才搞明白。(orz,惭愧)
我再也不想在任何头文件中看到“using namespace xxx;”了
百度我发现了这句话,仔细一看原因是因为:http://www.ituring.com.cn/article/23606
如果你把using声明用在了头文件中,你会让这类问题更加恶化,因为命名冲突问题早晚都会在一个调用关系非常非常远的模块中神不知鬼不觉的出现,
而你可能需要查三层调用才可以找到原因所在,一个头文件包含了另一个直接使用using声明的头文件可以导致命名空间被立刻污染掉,
任何一个使用命名空间的文件如果使用了std命名空间的内容,都会导致这类问题。
但是在VS中发现了 一句神奇的#pragma once
是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。
#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。
是不是有了这句话就可以使用using namespace xxx了呢~?!
时间: 2024-10-12 21:42:29