相关疑难解决方法(0)

静态初始化命令fiasco

我正在读一本关于SIOF的书,它举了一个例子:

//file1.cpp
extern int y;
int x=y+1;

//file2.cpp
extern int x;
int y=x+1;  
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:
在上面的代码中,会发生以下事情吗?

  1. 编译file1.cpp时,编译器保留原样,即不为它分配存储空间.
  2. 编译器为x分配存储空间,但不对其进行初始化.
  3. 编译file2.cpp时,编译器会保留x,即不为它分配存储空间.
  4. 编译器为y分配存储空间,但不对其进行初始化.
  5. 在链接file1.o和file2.o时,现在先让file2.o初始化,现在:
    x的初始值是否为0?或者没有初始化?

c++ dependencies initialization static-order-fiasco

20
推荐指数
2
解决办法
1万
查看次数