我正在使用visual studio 2010.我在一些cpp文件中使用以下代码在主函数执行之前运行一百次函数。
const int x = some_init_function()
但我发现使用visual studio,而不是init中的每个全局x。 我想问一下vc是否对这个结构有限制?
请注意: 在some_init_function中是一些代码执行操作,如注册。并且每个cpp文件中的变量名称都不同。
答案 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__))
完成此操作。