因为我没有完全找到我正在寻找的解决方案,所以我会彻底改写这个问题(他们很有帮助,但他们没有说任何其他我引用的问题,说吧)。编译单元和静态链接问题
鉴于以下4个文件:
文件#1:阿
class A { void a_func(); };
文件#2:A.cpp
#include "A.h"
static int x = 4;
void A::a_func() {
//implementation.
}
文件#3:BH
#include "A.h"
class B { void b_func(); };
文件#4:B.cpp
#include "B.h"
static int x = 3;
void B::b_func() {
//implementation.
}
问题1:由于B.h包含A.h,A.cpp是B编译单元的一部分吗?
问题2:自从A.cpp和B.cpp都声明了一个静态变量(x)的同名后,会不会有错误?我听说静态全局变量具有静态链接,这是依赖于翻译单元的,但是因为我不知道第一个问题,所以这对我没有多大帮助。