Mar*_*tin 4 c++ namespaces using-directives
在匿名命名空间内的"using namespace"语句中,询问以下内容是否合法
//file.cpp
//....
namespace
{
using namespace std;
}
int a(){
cout << "bla";
}
Run Code Online (Sandbox Code Playgroud)
答案是"它是".此外,使用命名空间指令通常被鄙视,即使插入cpp文件中也是如此,因为自引入统一构建(/sf/answers/453234211/)以来,头文件和实现文件之间的范围差异并不稳固.
我的问题:匿名命名空间是否使我免于此类问题,或者using指令是否仍能传播文件边框?在/sf/answers/180452331/中,提出了类似的方法.它是否也适用于匿名命名空间,它是否真的安全?当然std是一个糟糕的例子,但例如using namespace boost::assign;在某些cpp文件中会非常方便.
将它放在匿名命名空间中并将其放在一个命名空间之间没有任何区别.任何一个都会产生相同的效果,这会将整个std命名空间带入文件的顶级命名空间.这不好,应该避免.
至于"传播文件边界",如果你把它放在匿名命名空间之外也不会这样做.它唯一能够感染其他文件的是它是否存在#include于其他文件中的文件中,例如标题.
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |