extern const变量不是由函数调用启动的

时间:2017-07-12 10:36:40

标签: c++ const extern linkage

我以这种方式初始化两个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)。

0 个答案:

没有答案