私のコンパイラはそうではないのに、コンパイラがそう思っているように見えるので、私は尋ねます。
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 ...