メインコンテンツ

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"
Polyspace は foo\ をヘッダー名と解釈します。この場合、Polyspace はこのルールの違反を報告しません。ただしコンパイラは存在しないヘッダー ファイルを検索するため、コンパイル警告が表示されることがあります。

トラブルシューティング

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

すべて展開する

#include<dummy'file> //Noncompliant
#include<dummy"file> //Noncompliant

#include<dummy/*file> //Noncompliant
#include<dummy//file> //Noncompliant

#include "dummy'file" //Noncompliant
#include "dummy file"   //Compliant

#include "dummy/*file" //Noncompliant
#include "dummy//file" //Noncompliant

この例では、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.