在全局范围内使用静态变量和函数

org*_*00h 21 c++ static global global-variables static-variables

标记变量是否有用static,当它位于.cpp文件的全局范围内时,不在函数中?

你也可以将static关键字用于函数吗?如果是的话,它们的用途是什么?

Naw*_*waz 19

是的,如果要声明文件范围变量,则static必须使用关键字.static在一个翻译单元中声明的变量不能从另一个翻译单元引用.


顺便说一下,static在C++ 03中不推荐使用关键字.

C++标准(2003)的第7.3.1.1/2节中的内容如下:

在声明命名空间作用域中的对象时,不推荐使用static关键字; unnamed-namespace提供了一个更好的选择.

C++更喜欢命名的命名空间而不是static关键字.看这个主题:

未命名的命名空间优于静态?

  • 而最新的C++ 0x草案未对它进行了解释. (6认同)
  • @Fred:那很有意思!! (2认同)

Ben*_*ery 15

在这种情况下,关键字static表示函数或变量只能由同一cpp文件中的代码使用.相关符号不会被导出,也不会被其他模块使用.

当您知道其他模块中不需要全局函数或变量时,这是避免大软件中的名称冲突的好习惯.

  • 在C++中,应该使用未命名的命名空间. (12认同)