K&R第2版を読んでいると、プログラムが常に「main(){」で始まっていることに気づきました。main()はその前にintまたはvoidが必要だといつも思っていました。「intmain()」または「voidmain()」のようになります。「main()」とは何ですか?違いは何ですか?
3 に答える
main()
は古いK&Rスタイルであり、指定されていない場合int
は戻りタイプがデフォルトで省略されていましたint
(指定する必要があります)。さらに、空の括弧は、引数をとらないことを示すためにK&Rスタイルになっています。C99では、これvoid
はそのようなことを示す必要があります。空の括弧は、関数が任意のタイプの任意の数の引数を受け入れることを意味しますが、これは明らかにあなたが望むものではありません。したがって、最終結果は次のようになります。
int main(void) { ... }
main()
..を返す必要がありint
ます。慣例ではreturn 0;
、最後のステートメントは、プログラムが正常に実行されたことを呼び出し元に示すのに役立ちます。0以外の戻り値は、異常終了を示します。
あなたの質問に対するより直接的な答えは、main() { ... }
それが間違っていないのでうまくいくということでしょう。コンパイラーは、main
関数に対して戻り型が宣言されていないことを確認するため、デフォルトで。になりint
ます。空の括弧はmain
、任意のタイプの任意の数の引数を取ることを示していますが、これも間違いではありません。ただし、C99スタイル/標準に準拠するには、
int main(void) { ... }
これは古いバージョンのcでサポートされているためです。
main()
と同等です
int main()
ほとんどの場合、構文はコンパイラに依存します。たとえば、Visual C ++を使用する場合は「voidmain」と記述しますが、GCCを使用する場合は、「int main()」と記述し、プログラムが正常または不良の場合は0または1を返す必要があります。