まあ、それはできました。
たとえば、Plan 9オペレーティングシステムで使用されるCの方言でmain
は、通常、void
関数として宣言されますが、exits()
関数に文字列ポインターを渡すことにより、終了ステータスが呼び出し環境に返されます。空の文字列は成功を示し、空でない文字列は何らかの失敗を示します。これはmain
、char*
結果を返すことで実装できます。
また、システムを終了ステータスfloat
またはdouble
終了ステータスで実装することは確かに可能です。
だからなぜint
?それは単なる慣習の問題です-そして、それらの下で実行されるオペレーティングシステムとプログラムが共通の慣習に従うことには大きな価値があります。
Unixの慣習では、整数のステータスコードを使用します。0は成功を表し、0は失敗を表します(通常、成功する方法は1つだけですが、失敗する方法は複数あるため)。その慣習がUnixに由来しているかどうかはわかりません。以前のオペレーティングシステムから来たのではないかと思います。
(a)浮動小数点サポートは普遍的ではないため、(b)浮動小数点値とエラー条件の間のマッピングを定義することはより困難であるため、(c)異なるシステムは異なる浮動小数点を使用するため、 (d)プログラムの終了ステータスの丸めエラーを追跡する楽しみを想像してください。一方、整数はエラーコードの列挙に非常に役立ちます。
プラン9は、前述のとおり文字列を使用しますが、メモリ管理、文字エンコードなどに多少の複雑さを課します。これは、プラン9が実装した新しいアイデアであり、既存のものに置き換わるものではありませんでした。広範な慣習。
(C ++で尚は、main
できるだけ返しint
、及びCでvoid main
あなたが書いた場合、多くのコンパイラは非常に大声で文句を言わない。コンパイラは、具体的にそれをサポートしている場合にのみ許可されているvoid main
が、それはそれのことを言ってわずかな誇張だ間違っています。)