このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C:2012 Rule 7.4
A string literal shall not be assigned to an object unless the object’s type is “pointer to const-qualified char”
説明
ルール定義
A string literal shall not be assigned to an object unless the object’s type is “pointer to const-qualified char” 1 .
根拠
このルールにより文字列リテラルの変更を許可するような代入を回避します。
文字列リテラルを変更しようとすると未定義の動作が発生する可能性があります。たとえば、実装の一部で文字列リテラルを読み取り専用メモリに保存できるとします。文字列リテラルを変更しようとすると、例外やクラッシュが発生する可能性があります。
例外として、可変引数リストによって文字列リテラルを可変個引数関数に渡す場合は、このルールに違反しません。
Polyspace 実装
ルール チェッカーは、以下への文字列リテラルの割り当てにフラグを設定します。
const char*
以外のデータ型のポインター。const char
以外のデータ型の配列。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
グループ: リテラルおよび定数 |
カテゴリ: 必要 |
AGC カテゴリ: 必要 |
バージョン履歴
R2014b で導入
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.