web-dev-qa-db-ja.com

Cのint main()対void main()

Cでは、int main()はvoid main()が返さないintを返すことを知っています。それ以外に、それらの間に違いはありますか?最初は2番目よりも良いですか?

33
madU

ほとんどの場合、int main(void)またはint main(int argc, char* argv[])のいずれかを使用する必要があります。特に、パーソナルコンピュータで実行するための主要なコンパイラによってコンパイルされるプログラムを、C標準ライブラリのフルセットを使用して作成する場合、ほぼ確実にintを返す必要があります。 mainから。

(空の引数リストの使用も避けます。「 なぜ(void)をmainで使用しないのですか? 」を参照してください)

C99標準doesは、他の実装定義の署名を許可します。コンパイラのマニュアルを読んでいて、 。

(5.1.2.2.1)これは、戻り値の型intで定義され、パラメータなし...または2つのパラメータ...または他の実装定義の方法で

個人的には、areが許可されていても(可能であれば)回避します。これは、別のシステムに移植する必要がある場合にもう1つ心配する必要があるためです。

これに関する興味深い議論については、以下のコメントを参照してください。「 メインで(void)を使用しないのはなぜですか? 」.

22
detly

あなたの本がvoid main()と書かれている場合、それは非常に時代遅れであるか、ばかによって書かれたものです(またはその両方)

編集:独立したメインがある非常にありそうもないシステムにいる場合を除き、OK-参照してください Cおよびc ++のメイン関数のタイプは、ユーザーが定義する必要があるのはなぜですか

4
Martin Beckett