MISRA C:2023 Rule 13.1
説明
ルール定義
Initializer lists shall not contain persistent side effects 1 .
根拠
C99 は実行時のみ評価できる式が含まれる初期化子リストを許可します。ただし、リスト内の要素の評価順序は定義されていません。リスト内の要素の 1 つが別の要素で使用されている変数値を変更すると、評価順序のあいまいさにより未定義の値が発生します。したがって、このルールでは初期化子リスト内の式が、使用される変数を変更できないようにする必要があります。
Polyspace 実装
Polyspace® は、式が初期化子リスト内に出現し、その式が式内の変数を変更する場合、または volatile 変数を含んでいる場合は常に違反を報告します。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: 二次的影響 |
| カテゴリ: 必要 |
| 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.