2011-10-20 14 views

答えて

4

No. exit機能は返されませんが、呼び出されたプロセスは終了しません。 Cコンパイラはそれを直感的に理解しておらず、他のvoid関数を返すように扱います。

これは、exitがあなたの機能を終了させるが、Cコンパイラはそれをそのようには見ないが、これは意味する。したがって、それでも有効な戻り値が必要な場合は、十分なエラーレベルを有効にして警告/エラーを吐き出します。しかし、これはうまくいくほど簡単です

int myFunc() { 
    ... 
    exit(exitCode); 
    return 42; // Never hit but keeps C compiler happy 
} 
+1

+1 42を返すにはもう一度+1しますが、それは不可能です。 – sidyll

+1

正しい。しかし、exit()の引数はプログラムの終了ステータスとして使用され、そのステータスコードの意味はシステム固有のものであることに注意してください。 Unixのようなシステムでは、 'exit(1);'は失敗を示します。 VMSでは、成功を意味します。成功の場合は 'exit(EXIT_SUCCESS);'失敗の場合は 'exit(EXIT_FAILURE);'( 'で宣言されていますが、' exit() 'を呼び出す場合は'#include 'する必要があります) 'exit(N);'は 'main()'の 'return N;'と同じです。 –

関連する問題