次のように、mainから明示的に返されないCプログラムがいくつかあります。
int main(int argc, char *argv[])
{
// blah blah
}
GCC4.6.3と次のオプションを使用してコンパイルした場合:
gcc file.c -Wall -Wextra
プログラムは0を返さず、問題を引き起こしますが、標準(およびSOに関する他の多くの回答)は次のように述べています。
main関数のreturn型がintと互換性のある型である場合、main関数への最初の呼び出しからの戻りは、main関数によって返された値を引数としてexit関数を呼び出すことと同じです。[10] }に到達します。 main関数を終了すると、値0が返されます。戻りタイプがintと互換性がない場合、ホスト環境に返される終了ステータスは指定されていません。
[10] 6.2.4に従って、メインで自動保存期間が宣言されているオブジェクトの存続期間は、後者では終了しない場合でも、前者の場合で終了します。
私のプログラムは異なる値、160、15、14 ...ガベージを返しますか?
私は何かが足りないのですか?これはGCCのバグですか?GCCオンラインドキュメントに何も見つかりません。GCCは、これを指定できない古いC標準(C99より前)をまだ参照していますか?