2011-07-03 87 views
1

我有一個類,其中在構造函數中,我簡單地做的類之外的一個實例:輸出(「你好」); 如果我作出這樣的類的實例在main()函數外,「你好」並不在我的調試菜單彈出。但是,如果我做的類的實例在main()函數中,「你好」確實彈出。C++創建main()函數

爲什麼出現在main()函數中被創造出來的?當我把它放在main()函數之外時,是否有辦法讓它工作?

SomeClass instance; 

int main(){ 

} 

相比:

int main(){ 
    SomeClass instance; 
} 
+1

您正在使用什麼編譯器? –

+0

嘗試在'main'函數中使用全局對象 - 可能編譯器會優化全局,因爲它沒有被使用。或者讓全局變成「靜態常量」。你使用哪些優化選項? –

回答

3

對於類的靜態實例我想象中的構造函數運行前的調試控制檯是準備從printf接收輸出。這種代碼可能非常特定於實現。

+0

它可能是發送方,而不是接收方。 'stdout'可能尚未初始化。 –

+0

我認爲文件描述符在子進程啓動之前由父進程初始化,爲什麼stdout不能被「初始化?」 – Chris