2

たとえば Linux では、エラー コードが 0 の場合にバッチを使用する場合は問題ありませんが、C++ の規則は何ですか?

int (または bool) が 1 に等しい場合、それは true であると言えますが、C++ ではそのような関数の戻り値は何になるのでしょうか?

4

5 に答える 5

6

C++ では、成功の場合は true、失敗の場合は false を示すために boolean return を使用するのが一般的です。

また、整数の戻り値を使用することも一般的です。0 は成功を示し、0 以外は失敗またはその他の状態を示します (多くの場合、負の数はエラーを示し、正の数はその他の結果を示します)。

どちらのアプローチを選択するにしても、重要なことはそれを文書化し、コード ベース全体で一貫性を保つことです。

于 2009-12-10T16:15:55.623 に答える
3

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(..)) ...
于 2009-12-10T16:41:08.427 に答える
0

整数を返す標準 C 関数は通常、成功の場合は 0 以上を返し、失敗の場合は -1 を返します。-1 が返された場合、errno通常はより具体的なエラーを提供するように設定されます。ゼロは一般的な成功を示し、ゼロより大きい数値は成功と見なされ、追加の詳細を提供します。

のようなものを検討してくださいrecvfrom()。-1 の戻り値はerrno、詳細コードに設定された完全な失敗を示します。ゼロの戻り値は、ソケットが正常にシャットダウンされ、追加の呼び出しがデータを返さないことを意味します。ゼロより大きい戻り値は、データが受信され、受信されたバイト数が返されたことを意味します。

于 2009-12-10T16:20:25.880 に答える
0

C++ 関数またはメソッドは、またはのboolような値を返すことができます。プログラム (つまり関数) は、たとえば「成功」を報告するために、値を返さなければなりません。truefalsemainint0

于 2009-12-10T16:12:17.693 に答える
0

次の 2 つの質問をされていることを理解しています。

  • C ++でプログラムステータスを返す方法
  • C ++で関数がステータスを返す方法

基本的な答えは次のとおりです。

通常、プログラム (main()) は成功の場合は 0 を返し、失敗の場合はその他の値 (エラー) を返します。

関数が成功または失敗する場合、通常はboolとして型付けされ、 trueまたはfalseを返します。

関数が複数の値を返すことができる場合、通常はintまたはenum値を返します。

例外的なケースについては、例外をスローしてみてください。

于 2009-12-10T16:48:48.880 に答える