【问题标题】:constructor of global static member not being called when compiled with rvct使用 rvct 编译时未调用全局静态成员的构造函数
【发布时间】:2011-06-21 23:11:51
【问题描述】:

嗯,这有点复杂。 我正在编译一个静态库,它的头文件看起来类似于:

class Foo{
    static int Goo(){
        DoSomethingExciting();
        return 0;       
    }
    static int fooMember;
}

在 Cpp 中,我初始化了 fooMember:

int Foo::fooMember = Foo::Goo();

将静态库链接到我正在编写的应用程序时,应该调用的 Goo 方法没有被调用。确切地说,根本没有调用 DoSomethingExciting() 方法。我确实在应用程序中使用了 Foo 类。当我放线时:

int Foo::fooMember = Foo::Goo();

在我的应用程序的 cpp 中(当然我从静态库中删除了同一行),我看到调用了 Goo()。

我不确定如何命名我遇到的问题,我猜这是全局静态成员初始化或类似问题的问题。

我正在使用 RVCT 进行编译。在 Visual Studio 中编译相同的场景时,一切正常。我猜 RVCT 的行为不同,我可能需要添加一些编译标志。

顺便说一句,我也尝试在我编译的可执行文件上使用反编译器,但我没有看到对 Goo() 的任何调用,尽管我确实看到该方法在文件中。

我希望我对我的问题足够清楚:)

提前谢谢...

【问题讨论】:

    标签: c++ arm static-members realview


    【解决方案1】:

    如果是静态对象的构造函数会被调用,但既然只是静态方法,为什么会自动生成调用呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多