2011-07-03 42 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