42

C ++ではint mainなく使用する必要があるのはなぜですか?void main

4

8 に答える 8

42

簡単に言うと、C++標準では。main()を返す必要があるためintです。

ご存知かもしれませんが、main()関数からの戻り値は、ランタイムライブラリによってプロセスの終了コードとして使用されます。UnixとWin32はどちらも、プロセスの終了後にプロセスから返される(小さな)整数の概念をサポートしています。から値を返すことmain()は、プログラマーがこの値を指定するための1つの方法を提供します。

于 2009-01-16T08:40:42.107 に答える
16

ほとんどのオペレーティングシステムは、アプリケーションが成功したかどうかにかかわらず、ユーザーまたは呼び出しプロセスに報告します。これは、スクリプトがプログラムの結果を条件付きで(if-then)分岐できるスクリプトで特に役立ちます。次のようなもの:

// pseudo-code
screenscrape  http://mydatasource.com > results.txt
if errorlevel == 0 then
   processfile results.txt
else
   echo Screen Scraping Failed!
end if

この結果ステータスは、mainの戻り値を介して行われます。

一部のコンパイラではvoidmainが許可されていますが、一貫性と単純さのために、ANSI規格ではmainの単一のプロトタイプが必要です。

int main(int argc, char *argv[]);

Cでは、引数は呼び出し元によってクリーンアップされるため、mainの作成者は、引数argcおよびargvの宣言または処理を怠ることができます。ただし、mainを呼び出すセットアップルーチンがintの戻り値を期待し、代わりに値が見つからない場合、動作は未定義になる可能性があります。

短い答え:

  • mainの戻り値は、スクリプト作成に役立ちます。
  • mainを呼び出すセットアップおよびクリーンアップルーチンには、使用するための一貫したインターフェイスが必要です。
于 2009-01-16T08:40:55.243 に答える
7

主な変更理由

ボイドメイン(){}

int main() { }

それ以降のリリースでは、実行中にプログラムで発生したエラーを、それが実行されているオペレーティング システムに通知することでした。

return 0;

0 ではなく任意の数値が返された場合、正常に実行されたプログラムを識別します。これは、何らかのエラーが発生したことを意味し、そのエラー コードは main によって返されます。コードブロック IDEで実行している場合は、メインが 0 を返す場合にビルド ログを参照してください。通常は表示されます。

Process terminated with status 0

それ以外の場合は、エラーが発生したことを意味する赤でステータス コードが表示されます

于 2015-07-09T12:15:09.797 に答える
1

ウィキペディアから:

EXIT_SUCCESSmain関数から返された値は、プロセスの終了ステータスになりますが、C標準では、 (従来はゼロ)との2つの値にのみ特定の意味が割り当てられていますEXIT_FAILURE。他の可能な戻り値の意味は、実装によって定義されます。

于 2009-01-16T08:42:00.060 に答える
0

Cの場合と同様に、プロセスによってOSに終了コードが与えられるためです。

あなたはどちらかを使うことができます

int main (int argc, char ** argv)
{
  return (0);
}

また

int main (int argc, char ** argv)
{
  exit (0);
}

これは少なくともC89IIRCにあります。

于 2009-01-16T08:41:50.653 に答える
0

intはリターンコードであるため、プログラムはOSに戻ることができます。

この値を照会して、操作が成功したかどうかを確認できます。

これは、コマンドラインスクリプトを使用するときに非常に役立ちました。

于 2009-01-16T08:41:58.940 に答える
0

プログラムを実行して、正常に実行されるかどうかを確認します。したがって、0 が返された場合は true で正常に実行されたことを意味し、1 が返された場合は正常に実行されておらず、このint値はプログラムが正常に実行されたかどうかを OS に伝えます

于 2013-09-17T09:26:17.103 に答える
0

main()おそらく、メソッドからのステータス コードで正常に終了することが理にかなっているためです。Java では、これをエミュレートする必要がありますが、System.exit()これはそれほど優雅ではありません。

于 2009-01-16T08:42:29.063 に答える