1. ホーム
  2. c++

[解決済み] なぜ未使用の戻り値をvoidにキャストするのですか?

2022-09-08 11:13:39

質問

int fn();

void whatever()
{
    (void) fn();
}

未使用の戻り値をvoidにキャストする理由はあるのでしょうか、それとも完全に時間の無駄と考えるのが正しいのでしょうか?

フォローアップです。

まあ、それはかなり包括的に見えます。 私は、自己文書化されたコードはコメントよりも優れているので、未使用の戻り値をコメントするよりも良いと思います。個人的には、不要なノイズなので、これらの警告をオフにするつもりです。

この警告のせいでバグが発生したら、私は自分の言葉を噛み締めるでしょう...。

どのように解決するのですか?

デイビッドの 答え は、この関数の戻り値を知っていながらそれを明示的に無視していることを、他の開発者に明示的に示すためです。

これは、必要な場所でエラーコードが常に処理されることを確実にする方法です。

C++では、完全な静的キャスト記法を使用することは過剰なことのように感じられるので、これはおそらくCスタイルのキャストも使用することを好む唯一の場所だと私は考えています。 最後に、コーディング規約をレビューしているか、書いているのであれば、オーバーロードされた演算子 (関数呼び出し表記を使用しない) の呼び出しも、この対象から除外されるべきであることを明示的に述べるのも良い考えです。

class A {};
A operator+(A const &, A const &);

int main () {
  A a;
  a + a;                 // Not a problem
  (void)operator+(a,a);  // Using function call notation - so add the cast.