MISRA C:2023 Rule 8.8
The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
R2024a 以降
説明
ルール定義
The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage 1 .
根拠
内部リンクをもつオブジェクトのすべての宣言で常に static 指定子を使用しているわけではない場合、外部リンクと内部リンクをもつ同じオブジェクトを宣言することになる場合があります。
この場合、そのリンクは可視化されているそれ以前の指定に従います (C99 規格、節 6.2.2)。たとえば、以前の指定で内部リンクを示している場合、以後の指定で外部リンクを示していても、オブジェクトには内部リンクが含まれます。以後の指定のみである場合は、それ以外の形になると想定されます。
Polyspace 実装
ルール チェッカーでは以下の状況を検出します。
同じオブジェクトが異なるストレージ指定子で複数回宣言されている。
同じ関数が異なるストレージ指定子で宣言および定義されている。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: 宣言と定義 |
| カテゴリ: 必要 |
| AGC カテゴリ: 必要 |
バージョン履歴
R2024a で導入
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.