我以这种方式初始化两个extern const变量:
vars.hpp:
int init_a();
extern const int a;
extern const int b;
vars.cpp:
#include<vars.hpp>
int init_a() {
return 1;
}
const int a = init_a();
const int b = 1;
stuff.hpp:
extern const int d;
extern const int e;
stuff.cpp:
const int d = a;
const int e = b;
main.cpp中:
#include<vars.hpp>
#include<stuff.hpp>
int main(){
std::cout << a << b << d << e << std::endl;
return 0;
}
输出是&#34; 1101&#34;,而我期望&#34; 1111&#34;。你能解释为什么价值&#34; d&#34;在stuff.cpp和main之间没有共享。
如果这是一个正常的初始化顺序问题,据我所知,它应该是1111(首先初始化vars.cpp)或1100(首先初始化stuff.cpp)。