关于c++静态初始化代码限制
About c++ static init code limitation
我在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__))
来完成。
相关文章:
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 初始化正在影响与初始化无关的代码
- 开始多线程代码之前的初始化
- 在静态初始化期间运行代码
- 获取有关使用未初始化内存的错误代码
- 聚合初始化,clang想让我破坏代码吗
- 在运行时,何时完全初始化 std 库才能在不破坏代码的情况下使用它?
- 初始化代码的组织
- 初始化不可移动对象数组:为什么这样的代码无法在 GCC 上编译?
- 此代码中的数组初始化样式是什么?这是标准的吗?
- 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此大括号初始化列表代码
- 程序告诉我初始化在编写简单的C ++代码时不需要初始化的变量
- 在通用模板代码中初始化聚合成员
- 如何初始化共享复杂初始化代码的多个常量成员变量?
- 为什么单一实例必须在以下代码中初始化
- 在构造函数代码之前禁用默认类成员初始化
- 隐藏的单例,用于封装初始化和销毁代码
- C 在代码中初始化字符串变量时无控制台输出
- 避免复制粘贴代码初始化结构中的一系列SDL_Rect
- 如何在编译时或代码初始化时自动更新数组中的项