MISRA C:2023 Rule 8.4
A compatible declaration shall be visible when an object or function with external linkage is defined
R2024a 以降
説明
ルール定義
A compatible declaration shall be visible when an object or function with external linkage is defined 1 .
根拠
オブジェクトまたは関数が定義されているときに宣言が可視である場合、コンパイラで宣言と定義に互換性があることをチェックできます。
MISRA C:2012 Rule 8.5のこのルールは、ヘッダー ファイル内でオブジェクト (または関数) を宣言し、そのオブジェクト (または関数) を定義または使用するソース ファイル内にそのヘッダー ファイルをインクルードする手法を強制します。
Polyspace 実装
ルール チェッカーでは以下の状況を検出します。
事前の宣言なしでオブジェクトまたは関数が定義されている。
オブジェクトまたは関数の宣言と定義の間にデータ型の不一致がある。このような不一致もコンパイル エラーの原因となります。
現在、チェッカーは、仮定義 (指定子 extern を使用せずに宣言され、明示的に定義されていない変数) にフラグを設定します。ルール違反を避けるには、変数 static (1 つのファイルでのみ定義) を宣言するか、変数 extern を宣言して、その宣言の後に定義を続けます。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: 宣言と定義 |
| カテゴリ: 必要 |
| AGC カテゴリ: 推奨 |
バージョン履歴
R2024a で導入
参考
MISRA C:2023 のチェック (-misra-c-2023) | MISRA C:2023 Rule 8.2 | MISRA C:2023 Rule 8.3 | MISRA C:2023 Rule 8.5 | MISRA C:2023 Rule 17.3
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.