メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C++:2008 Rule 16-2-6

The #include directive shall be followed by either a <filename> or "filename" sequence

説明

ルール定義

The #include directive shall be followed by either a <filename> or "filename" sequence. 1

根拠

このルールはマクロの置換後にのみ適用されます。

#include 命令が次のいずれかの形式を使用していない場合、コードの動作は未定義になります。

  • #include <filename>

  • #include "filename"

これ以外の形式の #include 命令を使用することは ISO/IEC 14882:2003 で許可されていません。予期しない動作を避けるには、不正な形式の #include ステートメントの使用を避けます。

Polyspace 実装

#include 命令の後に <filename> または "Filename" が指定されていない場合、Polyspace® はこのルールの違反を報告します。

トラブルシューティング

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

すべて展開する

#include"incguard.h" //Compliant
#include<incguard.h> //Compliant

#define MH "myheader.h"
#define STR <string>
#include MH //Compliant
#include STR //Compliant

#include myfile.h //Noncompliant

この例では、Polyspace は myfile.h のインクルードを試行する命令にフラグを設定します。この命令が、許可されるいずれの形式にも従っていないためです。他の命令は、適用されるマクロ置換後に許可される形式に準拠しています。

チェック情報

グループ: 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.