MISRA C++:2008 Rule 3-1-1
It shall be possible to include any header file in multiple translation units without violating the One Definition Rule.
説明
ルール定義
It shall be possible to include any header file in multiple translation units without violating the One Definition Rule. 1
根拠
変数定義または関数定義を含むヘッダー ファイルが複数のインクルード パスに登場する場合、そのヘッダー ファイルは One Definition Rule (定義は 1 度の規則) に違反し、予測できない動作につながる可能性があります。たとえば、ソース ファイルでヘッダー ファイル include.h と別のヘッダー ファイルをインクルードしていて、その別のヘッダー ファイルでも include.h をインクルードしている場合です。
Polyspace 実装
ルール チェッカーは、ヘッダー ファイルの変数定義と関数定義にフラグを設定します。
Polyspace® は、ヘッダー ファイル内のこのルールの違反を報告します。非ヘッダー ソース ファイルでは、このルールの違反が報告されません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Basic Concepts |
| カテゴリ: 必要 |
バージョン履歴
R2013b で導入
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.