MISRA C++:2008 Rule 16-2-4
The ', ", /* or // characters shall not occur in a header file name.
説明
ルール定義
The ', ", /* or // characters shall not occur in a header file name. 1
根拠
ソース ファイルにヘッダー ファイルをインクルードするには、区切り記号 <> または "" でその名前を囲みます。区切り記号 < と > で囲まれている部分で、文字 '、"、/*、または // を使用することは、未定義の動作です。区切り記号 " で囲まれている部分で、文字 '、/*、または // を使用した場合も、未定義の動作が発生します。ご使用の環境とコンパイラによっては、ヘッダー ファイル名にこれらの文字を使用すると予期しない動作が発生する可能性があります。
文字 '、"、/*、または // をヘッダー ファイル名に使用することは避けます。
Polyspace 実装
以下のいずれかの文字がヘッダー ファイルの名前に含まれている場合、Polyspace® はこのルールの違反を報告します。
'"/*//
区切り記号 " の間で " を文字として使用すると、Polyspace はヘッダー名の中で 2 つの連続する " の間の部分を、ヘッダー ファイル名として解釈します。たとえば、このコードでは次のようになります。
#include "foo\".h"
foo\ をヘッダー名と解釈します。この場合、Polyspace はこのルールの違反を報告しません。ただしコンパイラは存在しないヘッダー ファイルを検索するため、コンパイル警告が表示されることがあります。トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Preprocessing Directives |
| カテゴリ: 必要 |
バージョン履歴
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.