Estoy compilando una biblioteca compartida con dos unidades de compilación: globals.cpp
y stuff.cpp
. El archivo globals.cpp
inicializa un puñado de variables externas que se usan en stuff.cpp
. El problema que estoy experimentando es que el código en stuff.cpp
se está ejecutando antes de que el código en globals.cpp
haya tenido la oportunidad de asignar un valor a las variables externas. Por ejemplo, veo que se utilizan varios valores de 0
. Este problema depende de en qué plataforma compile/ejecute el código, algo de trabajo y otros no.¿Por qué aún no se ha inicializado mi variable externa?
¿Cómo se soluciona esto? ¿Puedo forzar globals.cpp
a ejecutar primero?
Usted está experimentando el [fiasco de la orden de inicialización estática] [1]. [1]: http://stackoverflow.com/questions/3035422/static-initialization-order-fiasco – kfmfe04
Gracias, eso al menos aclara el problema. – sholsapp