簡體   English   中英

使用rvct編譯時,不會調用全局靜態成員的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM