C++中全局变量和文件变量之间有什么区别?
谢谢!
在C和C++中,您可以通过在声明前面使用static关键字来创建一个全局变量,只能从声明它的文件中访问它.可以从编译到程序中的任何C或C++文件访问不使用static关键字的Globals.
在C++中不推荐使用静态全局方法,而是使用匿名命名空间.放置在匿名命名空间内的任何声明也只能从该文件中访问.
C++程序一次编译一个翻译单元(基本上这意味着每个.cpp文件是独立编译的).
默认情况下,变量都没有const
,功能不inline
和typedef
■找内部链接:这意味着他们不给其他翻译单元可见.如果其他翻译单元引用具有内部链接的符号(在声明它之后,需要extern
变量的关键字),链接器将无法找到它们.
要明确要求内部链接,请使用关键字,static
或者更好地使用未命名的命名空间.