我在公司到处都能看到这样的代码:
namespace {
const MAX_LIMIT = 50;
const std::string TOKEN = "Token";
}
我很困惑为什么你需要一个匿名的命名空间。一方面,您需要MAX_LIMIT
AND的本地翻译单元TOKEN
。但是由于const
. static const
和简单const
都实现本地翻译单元。
另一方面,如果文件中某处有一个名称相同的变量,则不会发生命名冲突。
int foo()
{
std::string TOKEN = "MyToken"; // Clash! ::TOKEN vs TOKEN can be used.
}
这将证明匿名命名空间是合理的。但是,您多久需要在函数中使用一个实际上已经被const
函数外部声明的变量占用的变量名?我的答案是永远不会。所以在实践中,对我来说,不需要未命名的命名空间。有什么提示吗?