58

mainC++ (または C) プログラムで関数を宣言する方法は重要ですか?

4

8 に答える 8

76

違いは、1 つは を定義する正しい方法mainであり、もう 1 つはそうでないことです。

はい、それは重要です。また

int main(int argc, char** argv)

また

int main()

mainは、C++ 仕様ごとの適切な定義です。

void main(int argc, char** argv)

IIRC は、古い Microsoft の C++ コンパイラに付属していた倒錯ではありません。

https://isocpp.org/wiki/faq/newbie#main-returns-int

于 2009-03-11T23:56:08.883 に答える
28

Bjarne Stroustrupは次のように明確に述べています。

定義void main()は C++ ではなく、C++ であったことも、C であったことさえありません。

リファレンスを参照してください。

于 2010-01-17T12:49:36.107 に答える
13

を使用する必要がありますint main。C と C++ の両方の標準でmain、 が値を返すように指定されています。

于 2009-03-11T23:57:28.490 に答える
9

C++ の場合、int のみが許可されます。C の場合、C99 は int のみが許可されていると述べています。以前の基準ではvoid返品が許可されていました。

つまり、常にint.

于 2009-03-11T23:56:50.647 に答える
5

ポイントは、C プログラム (および C++ も同じ) は常に成功値またはエラー コードを返す (すべきか?) ため、そのように宣言する必要があるということです。

于 2009-03-12T01:01:36.090 に答える
3

仕様に従っている場合は、常に をmain返すことを宣言する必要がありintます。

ただし、実際には、ほとんどのコンパイラではどちらでも問題なく使用できるため、実際の違いは、シェルに値を返す必要があるかどうかです。

于 2009-03-12T00:04:06.650 に答える
2

C++ では、main()を返す必要がありintます。ただし、C99 ではmain()int戻り型を使用できます。以下は、C99 標準からの抜粋です。

5.1.2.2.1 プログラムの起動

プログラムの起動時に呼び出される関数は main と呼ばれます。実装は、この関数のプロトタイプを宣言していません。これは、戻り値の型が int で、パラメーターなしで定義されます。

int main(void) { /* ... */ }

または 2 つのパラメーター (ここでは argc および argv と呼ばれますが、宣言されている関数に対してローカルであるため、任意の名前を使用できます):

int main(int argc, char *argv[]) { /* ... */ }

または同等のもの; または他の実装定義の方法で

また、gcc はコンパイルを実行しますvoid main()が、実際には、return 0;右中括弧に遭遇するとコンパイルを実行することに注意してください。

于 2010-01-17T12:27:02.227 に答える