メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C:2012 Rule 17.7

The value returned by a function having non-void return type shall be used

説明

ルール定義

The value returned by a function having non-void return type shall be used 1 .

根拠

意図せずに非 void の戻り値型の関数を呼び出し、その戻り値を使用しない場合があります。コンパイラが呼び出しを許可しているため、省略に気付かない可能性があります。ルールは、戻り値が使用されない場合に、非 void 関数の呼び出しを禁止しています。関数の戻り値を使用しない場合は、戻り値を明示的に void にキャストします。

Polyspace 実装

チェッカーは、戻り値が使用されない場合や void 型に明示的にキャストされない場合に void 以外の戻り値で関数にフラグを設定します。

ただし、関数の memcpymemsetmemmovestrcpystrncpystrcatstrncat は、最初の引数へのポインターを返すだけなので、フラグは設定されません。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

unsigned int cutOff(unsigned int val) {
    if (val > 10 && val < 100) {
        return val;
    }
    else {
        return 0;
    }
}

unsigned int getVal(void);

void func2(void) {
    unsigned int val = getVal(), res;
    cutOff(val);           /* Non-compliant */
    res = cutOff(val);     /* Compliant */
    (void)cutOff(val);     /* Compliant */
}

この例では、cutOff の戻り値が後で使用されない場合、ルールに違反します。

戻り値が以下の値の場合、このルールの違反にはなりません。

  • 別の変数に代入されている。

  • 明示的に void にキャストされている。

チェック情報

グループ: 関数
カテゴリ: 必要
AGC カテゴリ: Readability

バージョン履歴

R2014b で導入


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.