关于c++静态初始化代码限制

About c++ static init code limitation

本文关键字:代码 初始化 c++ 静态 关于      更新时间:2023-10-16

我在visualstudio 2010工作。我在一些cpp文件中使用以下代码在主函数执行之前运行一个函数一百次。

const int x = some_init_function()

但我在visualstudio中发现,并不是init中的所有全局x。我想问一下vc是否对这个结构有限制?

注意:在someinit函数中,有一些代码在做诸如注册之类的事情。每个cpp文件中的变量名都不同。

如果要保证代码在main()之前运行,则需要将变量设置为static,并将其与main()放在同一文件中。否则,它可能不会在main()之前被初始化。有关更多信息,请参阅此处:全局变量的静态初始化是否在"main()"之前完成?

或者,您可以使用此处描述的技术在MSVC中设置"在main之前调用"函数:https://stackoverflow.com/a/2390626/4323

如果您使用的是GCC,那么这将使用__attribute__((__constructor__))来完成。