cpp // a.h static int a=10; cpp // b.h #include "a.h" extern int a; // void func(); cpp // b.cpp #include "b.h" #include <iostream> /* void func() { a=20; std::cout<<a<<std::endl; }*/ cpp cpp //c.h #include "b.h" extern int a; ``` cpp //c.cpp #include "c.h" #include <iostream> using namespace std; int main() { cout<<a<<endl; // func(); cout<<"***************"<<endl; cout<<a<<endl; return 0; } ``` a.h中的静态全局变量在b.cpp和在c.cpp中是同一个变量吗
时间: 2024-04-01 07:32:46 浏览: 123
C生成静态库给C++调用出现undefined reference to ...解决方案_cpp
5星 · 资源好评率100%
静态全局变量 a 在 a.h 中被定义,头文件 a.h 被包含在 b.cpp 和 c.cpp 中。由于 a 是静态变量,它只在定义它的源文件中可见,也就是说在 b.cpp 中的 a 和在 c.cpp 中的 a 是不同的变量。在 b.cpp 中的 a 的作用域仅限于 b.cpp,而在 c.cpp 中的 a 的作用域仅限于 c.cpp。因此,静态全局变量在 b.cpp 和 c.cpp 中不是同一个变量。
阅读全文