跨 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