关于c ++静态init代码限制

时间:2015-12-18 02:25:47

标签: c++

我正在使用visual studio 2010.我在一些cpp文件中使用以下代码在主函数执行之前运行一百次函数。

const int x = some_init_function()

但我发现使用visual studio,而不是init中的每个全局x。 我想问一下vc是否对这个结构有限制?

请注意: 在some_init_function中是一些代码执行操作,如注册。并且每个cpp文件中的变量名称都不同。

1 个答案:

答案 0 :(得分:1)

如果您希望保证代码在main()之前运行,则需要创建变量static并将其放在与main()相同的文件中。否则,它可能不会在main()之前初始化。有关详情,请参阅此处:Is the static initialization of global variables completed before `main()`?

或者,您可以使用此处描述的技术在MSVC中设置“在主要之前调用”功能:https://stackoverflow.com/a/2390626/4323

如果您使用GCC,则可以使用__attribute__((__constructor__))完成此操作。