たとえば Linux では、エラー コードが 0 の場合にバッチを使用する場合は問題ありませんが、C++ の規則は何ですか?
int (または bool) が 1 に等しい場合、それは true であると言えますが、C++ ではそのような関数の戻り値は何になるのでしょうか?
C++ では、成功の場合は true、失敗の場合は false を示すために boolean return を使用するのが一般的です。
また、整数の戻り値を使用することも一般的です。0 は成功を示し、0 以外は失敗またはその他の状態を示します (多くの場合、負の数はエラーを示し、正の数はその他の結果を示します)。
どちらのアプローチを選択するにしても、重要なことはそれを文書化し、コード ベース全体で一貫性を保つことです。
C とそのランタイム ライブラリでは、0 は成功を意味します (場合によっては、errno のポーリングが必要になります)。
C++ の世界はよりカラフルです。
bool の使用規則と "0" を混在させないでください。結果は単なる紛らわしいコードになります (例を参照)。複数の値が必要な場合は、状況に応じて、列挙、追加の戻りパラメーター、または例外を使用します。
bool と '0' コードの混乱が発生しました:
// sorry for abuse of "C" for educational purposes
bool isSame(s1,s2) { return s1==s2; }
int isSame2(s1, s2) { return strcmp(s1.cstr(), s2.cstr()); }
if (isSame(..) && !isSame2(..)) ...
整数を返す標準 C 関数は通常、成功の場合は 0 以上を返し、失敗の場合は -1 を返します。-1 が返された場合、errno通常はより具体的なエラーを提供するように設定されます。ゼロは一般的な成功を示し、ゼロより大きい数値は成功と見なされ、追加の詳細を提供します。
のようなものを検討してくださいrecvfrom()。-1 の戻り値はerrno、詳細コードに設定された完全な失敗を示します。ゼロの戻り値は、ソケットが正常にシャットダウンされ、追加の呼び出しがデータを返さないことを意味します。ゼロより大きい戻り値は、データが受信され、受信されたバイト数が返されたことを意味します。
C++ 関数またはメソッドは、またはのboolような値を返すことができます。プログラム (つまり関数) は、たとえば「成功」を報告するために、値を返さなければなりません。truefalsemainint0
次の 2 つの質問をされていることを理解しています。
基本的な答えは次のとおりです。
通常、プログラム (main()) は成功の場合は 0 を返し、失敗の場合はその他の値 (エラー) を返します。
関数が成功または失敗する場合、通常はboolとして型付けされ、 trueまたはfalseを返します。
関数が複数の値を返すことができる場合、通常はintまたはenum値を返します。
例外的なケースについては、例外をスローしてみてください。