このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C++:2023 Rule 7.0.2
説明
ルール定義
There shall be no conversion to type bool
. 1
根拠
基本型から bool
への変換は、コンパイラが非ゼロ値を true
として扱うことを利用しています。これは、POSIX 標準に準拠しており、特定の整数リターン コードを使用する API と競合します。たとえば、戻り値が -1
の場合はエラーを示す可能性がありますが、コンパイラはこの値を暗黙的に true
に変換します。
さらに、bool
へのコンテキスト変換の結果は、開発者の想定に反する場合があります。したがって、if
ステートメントなどの bool
変換が必要な状況では、明示的に bool
型に評価される式を使用します。
Polyspace 実装
ルール チェッカーは、基本型から bool
型へのコンテキスト変換を実行した場合に違反を報告します。
以下の状況の bool
への変換は準拠しています。
サイズが 1 のビットフィールドを持つ値から
bool
への変換。値0
はfalse
に変換され、値1
はtrue
に変換されるためです。explicit operator bool
式が含まれるクラス タイプでのstatic_cast<bool>
の使用。explicit operator bool
式が含まれるポインターまたはクラスからbool
へのコンテキスト変換の実行。type-specifier-seq declarator
形式の条件があるwhile
ループの使用。while
ループと同じ結果が得られる同様の方法では、不必要にスコープが広いオブジェクトが必要になるため、これは準拠しています。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
グループ: 標準変換 |
カテゴリ: 必要 |
バージョン履歴
R2024b で導入
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.