奇怪,13后面没有14,直接跳到22了。
理由:
复杂的初始化会导致执行顺序的不确定性。
例子:
//file1.cexternconstXx;constYy=f(x);//adx;writey//file2.cexternconstYy;constXx=g(y);//ady;writex因为x和y在不同编译单元里,f()和g()的调用顺序不确定。其中一个函数会访问到一个未初始化的const。
注意:
在并发执行的代码中初始化顺序的问题会更加难处理。最好避免使用全局对象。
强化:
标注调用非constexpr函数的全局初始化函数
标注访问extern对象的全局初始化函数
C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。
C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。
kimim