[英]constructor of global static member not being called when compiled with rvct
好吧,這有點復雜。 我正在編譯一個靜態庫,它的標頭看起來與此類似:
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()的任何調用。
我希望我對我的問題足夠清楚:)
提前致謝...
如果它是靜態對象的構造函數,則將調用該方法,但是由於它只是靜態方法,因此為什么會自動生成對其的調用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.