2011-07-03 13 views
1

私はクラスを作成していますが、コンストラクタでは単に次のようにします:printf( "Hello"); main()関数の外でそのクラスのインスタンスを作ると、 "Hello"はデバッグメニューにポップアップしません。しかし、main()関数の内部でクラスのインスタンスを作成すると、 "Hello"が実際にポップアップします。C++ main()関数の外部でクラスのインスタンスを作成する

なぜmain()関数の内部で作成する必要がありますか? main()関数の外に置いたときに動作させる方法はありますか?私がデバッグコンソールがprintfからの出力を受信する準備ができている前に、コンストラクタが実行想像クラスの静的例えば

int main(){ 
    SomeClass instance; 
} 
+1

どのコンパイラを使用していますか? –

+0

'main'関数でグローバルオブジェクトを使いましょう。おそらく、コンパイラは使われていなかったためにグローバルを最適化しました。あるいは、グローバルを 'static const'にします。どのような最適化オプションを使用していますか? –

答えて

3

:に比べ

SomeClass instance; 

int main(){ 

} 

。この種のコードはおそらく実装固有のものです。

+0

おそらく受信側ではなく送信側です。 'stdout'はまだ初期化されていないかもしれません。 –

+0

私は、ファイル記述子は、子プロセスが開始される前に親プロセスによって初期化されていると思うので、なぜ「初期化」されないのでしょうか? – Chris

関連する問題