当 C 程序中的多个文件包含依赖于静态变量的静态变量时,就会出现臭名昭著的“静态初始化顺序惨败”(SIOF)。彼此进行初始化。考虑以下示例:
// file1.cpp extern int y; int x = y + 1; // file2.cpp extern int x; int y = x + 1;
问题:
在编译 file1.cpp 期间,编译器是否:
在编译file2.cpp期间,编译器是否:
链接 file1.o 和 file2.o 时,如果首先初始化 file2.o,则:
答案:
根据C标准(3.6.2“非本地的初始化”)对象"):
说明:
以上是C 中的静态初始化顺序惨败期间会发生什么?的详细内容。更多信息请关注PHP中文网其他相关文章!