静态变量具有文件范围。说我有两个以下文件:
头文件中的静态变量
- file1.h
- file1.cpp
- file2.h
- file2.cpp
我已经声明为static变量都表示static int Var1
头文件。 main.cpp
文件中包含file1.h
和file2.h
。
我这样做,因为静态变量将具有文件范围,所以它不会相互冲突。 但编译后,我发现它显示冲突。
现在静态变量的行为如同extern
变量。另一方面,如果我在.cpp文件中声明了静态变量,它编译得很好。
我无法理解此行为。
任何机构都可以解释在这种情况下工作范围的范围和连接方式。
相关的,请参见[不要在头文件中定义一个未命名的名称空间](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL59-CPP.+Do+not+define+an+未命名+名称空间+中的+ a +标题+文件) – jww 2018-02-20 16:47:14