C++ 使用rvct编译时未调用全局静态成员的构造函数
这解释起来有点复杂。 我正在编译一个静态库,它有一个类似于以下内容的标题:C++ 使用rvct编译时未调用全局静态成员的构造函数,c++,arm,static-members,realview,C++,Arm,Static Members,Realview,这解释起来有点复杂。 我正在编译一个静态库,它有一个类似于以下内容的标题: class Foo{ static int Goo(){ DoSomethingExciting(); return 0; } static int fooMember; } 在Cpp中,我对fooMember进行了初始化: int Foo::fooMember = Foo::Goo(); 将静态库链接到我正在编写的应用程序时,应该调用的Goo方法
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进行编译。在VisualStudio中编译相同的场景时,一切都很好。我猜RVCT的行为不同,我可能需要添加一些编译标志
顺便说一句,我还尝试在编译的可执行文件上使用反编译器,但没有看到对Goo()的任何调用,尽管我确实看到该方法在文件中
我希望我对我的问题足够清楚:)
提前感谢…如果它是静态对象的构造函数,则会调用它,但既然它只是一个静态方法,为什么会自动生成对它的调用