跨 TU 的全域性變數的初始化順序
在翻譯單元內,指定了全域性變數的初始化順序,未指定跨翻譯單元的初始化順序。
所以用以下檔案程式設計
-
Foo.cpp 中
#include <iostream> int dummyFoo = ((std::cout << "foo"), 0);
-
bar.cpp
#include <iostream> int dummyBar = ((std::cout << "bar"), 0);
-
main.cpp 中
int main() {}
可能產生輸出:
foobar
要麼
barfoo
這可能導致靜態初始化訂單 Fiasco 。