MISRA C++:2008 Rule 18-0-2
The library functions atof, atoi and atol from library <cstdlib> shall not be used.
説明
ルール定義
The library functions atof, atoi and atol from library <cstdlib> shall not be used. 1
根拠
ライブラリ <cstdlib> に含まれる関数 atof、atoi、および atol を使用して文字列を数値に変換すると、エラー状態が発生する可能性があります。たとえば、入力文字列が次のようになっている場合、前述の関数を使用するとエラーが発生することがあります。
数値が含まれていない
数値は含まれるが、範囲外の数値である
数値の後にデータが続いている
上記の関数を使用すると、文字列から数値への変換が失敗して、未定義の動作を引き起こす可能性があります。未定義の動作と検出されないエラーを回避するには、文字列から数値への変換時に出力のエラー状態をチェックします。
Polyspace 実装
Polyspace® は、文字列を数値に変換する C 標準ライブラリ関数 atoi()、atol()、および atof() にフラグを設定します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Language Support Library |
| カテゴリ: 必要 |
バージョン履歴
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.