在 C++ 中,匿名命名空间等同于:
namespace $$$$ {
//something
}
using namespace $$$$;
其中 $$$$ 是某种唯一标识符。匿名命名空间对于不应在编译单元外看到的代码很有用。
到目前为止一切顺利,但是最近我开始用模板编写一些代码,这样的代码必须在 header 中,因此使用匿名命名空间没有多大意义,因为仅包含 header 会使隔离效果无效。
那么问题来了,在这种情况下,建议的方式是什么?我开始使用名为 Private 的命名空间。它并没有真正阻止任何想要使用内部标识符的人,但至少它减少了与 id“Private”的名称冲突。
有没有更好的方法?有什么建议吗?
最佳答案
坚持使用您的 Private
namespace
(或使用更流行的 detail
)。请记住,C++ 访问机制背后的主要思想是让滥用它们变得困难,而不是不可能。保护自己免受意外伤害,而不是恶意攻击。
关于c++ - 如果我需要在 header 中使用匿名命名空间怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118016/