Use of static variables and functions in global scope
当变量位于.cpp文件的全局范围内,而不是在函数中时,是否可以将其标记为
您也可以为函数使用static关键字吗?如果是,它们的用途是什么?
是的,如果要声明文件范围变量,则需要
顺便说一下,在C++ 03中使用EDCOX1的0个关键字。
从C++标准(2003)读取$7.3.1.1/2的部分,
The use of the static keyword is
deprecated when declaring objects in a
namespace scope; the
unnamed-namespace provides a superior
alternative.
C++在EDCOX1的0个关键字上更喜欢未命名的命名空间。请参阅本主题:
未命名命名空间相对于静态命名空间的优势?
在这种情况下,关键字static意味着函数或变量只能由同一cpp文件中的代码使用。关联的符号不会被导出,也不会被其他模块使用。
这是一个很好的实践,当您知道在其他模块中不需要全局函数或变量时,可以避免在大型软件中出现名称冲突。
举个例子-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // At global scope int globalVar; // Equivalent to static int globalVar; // They share the same scope // Static variables are guaranteed to be initialized to zero even though // you don't explicitly initialize them. // At function/local scope void foo() { static int staticVar ; // staticVar retains it's value during various function // function calls to foo(); } |
它们都只在程序终止/退出时才停止存在。