C++ 命名空间和静态变量

6

我有一个需求,需要在一个由多个类组成的cpp文件中始终可用一个(const)变量。我决定使用命名空间来解决这个问题,但是以下内容让我不确定:

  • 我需要将此变量定义为静态变量吗?
  • 如果我选择匿名命名空间,是否可以避免将变量定义为静态变量?

你尝试过在类/函数外部的顶部声明它吗?(当然不包括静态声明) - neeKo
2
你有什么理由不想将它设为静态的吗? - tpg2114
1
如果它是“const”,那么它也是隐式静态的。您必须使用“extern const”使其非静态。 - Bo Persson
1个回答

7
  1. 您不需要将变量定义为静态变量或匿名命名空间中的变量。但是,如果您在定义该对象后不在文件外使用它,则建议这样做,以减少命名空间污染并加快链接速度(通过减少链接器需要考虑的符号数量)。
  2. 如果您在匿名命名空间中声明变量,则它将有效地成为静态变量。实际上,也没有必要将其设置为静态变量(尽管您可以这样做)。匿名命名空间的优点是您还可以定义类型(类、结构、枚举、typedef)以及静态变量和函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接