メインコンテンツ

AUTOSAR C++14 Rule A16-6-1

#error directive shall not be used

説明

ルール定義

#error 命令は使用しないものとします。

根拠

通常は、#error 命令と #if または同様の命令を組み合わせて、条件が満たされなかった場合に、コンパイルを失敗させ、メッセージを発行します。ただし、#error はテンプレートに適用できません。プリプロセッサ命令は、リンク、型チェッカー、オーバーロード、およびその他の C++ 機能に従わないため、#error がインスタンス単位のテンプレート推測として評価されません。

代わりに、コンパイル時エラー チェックに static_assert を使用します。静的なアサーションでは、C++ 機能のすべてのメリットを利用でき、コードがより明確になります。

Polyspace 実装

Polyspace® は、#error 命令のすべての使用にフラグを設定します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

チェック情報

グループ: プリプロセッサ命令
カテゴリ: Required、Automated

バージョン履歴

R2020a で導入