代码之家  ›  专栏  ›  技术社区  ›  Joymaker

C++与Objy-C的静态初始化

  •  3
  • Joymaker  · 技术社区  · 14 年前

    我有一个iPhone游戏,一个来自其他平台的C++端口。因此,用户界面是用Obj-C编码的,但是程序的核心逻辑是在几个C++文件中。一些C++文件在顶部有许多带有初始化器的全局变量。

    惊喜!调试表明从未进行过初始化。好像Obj-C链接不知道调用C++静态初始化链。有人知道解决这个问题的方法吗?一种手动强制这些初始化例程被调用的方法?

    1 回复  |  直到 14 年前
        1
  •  3
  •   upriser    14 年前

    全局变量的静态初始化为 通常地 被认为是有害的。初始化的顺序取决于实现。另外,它在obj-c编译器中也不能很好地工作。

    使用 Construct On First Use Idiom 相反。

    另请参见本网站: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.15