在C++中,静态全局变量的访问权限可以通过以下方式设置:
- 默认访问权限(即文件作用域):如果不对静态全局变量显式指定访问修饰符,那么它的访问权限默认为“文件作用域”。这意味着该变量只能在定义它的源文件中访问。在其他源文件中,无法直接访问该变量。
// file1.cpp #includestatic int staticGlobalVar = 10; // 默认访问权限为文件作用域 void foo() { std::cout << "Static global variable in file1: " << staticGlobalVar << std::endl; }
- public访问权限:如果希望在其他源文件中也能够访问该静态全局变量,可以将其声明为public。这样,所有包含该静态全局变量的源文件都可以访问它。
// file1.cpp #includestatic int staticGlobalVar = 10; // 默认访问权限为文件作用域 void foo() { std::cout << "Static global variable in file1: " << staticGlobalVar << std::endl; }
// file2.cpp #include#include "file1.h" void bar() { std::cout << "Static global variable in file2: " << staticGlobalVar << std::endl; }
// file1.h #ifndef FILE1_H #define FILE1_H extern int staticGlobalVar; // 声明为public void foo(); #endif // FILE1_H
在这个例子中,我们将staticGlobalVar
声明为public,这样它就可以在file1.cpp
和file2.cpp
中访问了。注意,我们在file1.h
中使用了extern
关键字来声明staticGlobalVar
,这样其他源文件就可以知道它的存在。