質問

C ++のC ++のvoidにエントリポイントの戻りタイプを設定したのはなぜですか?なぜ悪い練習と考えられているのですか?

今、私はC#とJavaを理解しているので、エントリポイントの戻り型がvoid i.e になることを可能にします。

static void main(String[] args) /* Java */
static void Main(string[] args) /* C# */
.

とC#およびJavaプログラマーはそれが悪い練習を考慮していない、彼らはそれをしばしばそれを使用します。

その他の言語(のみがこの10年間、少なくともC ++では、少なくともC ++に成功することに成功します)Dプログラミング言語やValaのようにC ++の後継者もvoid main()を許可します。あなたが見ることができるように、私はC ++コミュニティが標準からそれを削除したのを疑います。

だから私の質問は、C ++コミュニティがvoid main()を削除したのですか?何が悪かったのですか?

役に立ちましたか?

解決

C ++規格委員会は、既存のコードの大きな既存のコードの大規模な既存のコードを要求することを選択して、特定の終了コードをランタイムシステムに返すと予想される可能性が高い。代わりに既存のコードがint main()を使用するように変更することを期待するのは不合理です。

Javaなどの言語は、設計されたときに、互換性があることが必要な既存のコードの任意のボディを持たなかった。したがって、設計者はreturnを選択し、ゼロ以外の終了コードのexit()を使用する必要があります。

そのため、C ++規格のint main()を選択することで「間違った」となることは、void main()System.exit()からの終了コード値を使用すると予想される既存のコードを破ることです。

他のヒント

c ++は、を使用許可されていません。

同様に、cは、拡張子以外のvoid main()を使用することはありません。void main()キーワードを導入したのと同じ1989規格は、voidmainint main(void)の2つの標準定義を定義しました。

他の言語は、他の言語であるために許可されています。

int main(int argc, char *argv[])ではなく、void main()を書くことができることは特にありません。明示的に値を返す必要さえありません。int main()の終わりからの降下は、main(C ++、およびC99から始めてC)と同じです。

一般的にプログラムの終了ステータスを知りたいです。それがあなたがint main()を持っている理由です - あなたがあなたの出口ステータスを返します。

これはC ++規格が法的なmainとして指定されているものではないため、間違っています。誰も他の言語が指定するものを気にしないでください。C ++プログラムの場合、C ++規格のみが関連しており、intと表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top