我被要求修改的一些代码看起来很像这样:
namespace XXX {
namespace {
// some stuff
} // end of unnamed
// Some stuff within the scope of XXX
} // end of XXX
我正在努力寻找将未命名的命名空间嵌入到另一个命名空间中的优势(如果有的话),并且我正在考虑将其更改为:
namespace {
// some stuff
} // end of unnamed
namespace XXX {
// Some stuff within the scope of XXX
} // end of XXX
任何意见将不胜感激。
它确实有实际的好处。
未命名的命名空间隐藏其内部的名称不同的翻译单位.
上面的代码之所以有效,只是因为 foo 的定义位于same翻译单位。
假设 main() 和 foo() 的定义位于不同的翻译单位。
它将编译,因为主文件包含声明的标头。但它不会链接,因为从逻辑上讲,不存在 X::(unnamed namespace)::foo 这样的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)