私のコンパイラはそうではないのに、コンパイラがそう思っているように見えるので、私は尋ねます。
echo 'int main;' | cc -x c - -Wall
echo 'int main;' | c++ -x c++ - -Wall
Clangはこれに関する警告やエラーを発行せず、gccは微妙な警告のみを発行します'main' is usually a function [-Wmain]が、Cとしてコンパイルされた場合のみ-std=です。aの指定は重要ではないようです。
それ以外の場合は、コンパイルして正常にリンクします。しかし、実行すると、SIGBUS(私にとっては)ですぐに終了します。
CとC ++でmain()が何を返す必要があるか(優れた)回答を読む そして、言語仕様をざっと見てみると、メインの機能が必要なように思えます。しかし、gcc ( 'main'は通常は関数です)からの言い回し(およびここでのエラーの不足)は、おそらく別のことを示唆しているようです。-Wmain
しかし、なぜ?これには、奇妙なエッジケースまたは「歴史的」な使用がありますか?誰が何を与えるか知っていますか?
私のポイントは、おそらく、これはホストされた環境ではエラーになるはずだと私は本当に思っているということです。
-pedanticまたは任意の-std。私のシステムc99も警告やエラーなしでこれをコンパイルします...
main、これは機能しそうにありません。mainを「正しい」値で初期化すると、実際に返される可能性があります...
main)独立した実装では異なる可能性があります
gcc -std=c99 -pedantic ...