跨 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