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

#include директива должна сопровождаться или <имя файла> или последовательность "имени файла"

Описание

Управляйте определением

#include директива должна сопровождаться или <имя файла> или последовательность "имени файла".

Объяснение

Это правило применяется только после макро-замены.

Поведение кода не определено если #include директива не использует одну из следующих форм:

  • #include <filename>

  • #include "filename"

Используя другие формы #include директивы не разрешены ISO/IEC 14882:2003. Чтобы избежать неожиданного поведения, избегайте использования уродливого #include операторы.

Реализация Polyspace

Polyspace® повышает нарушение этого правила если #include директива не сопровождается ни одним <filename> или "Filename".

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

развернуть все

#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 потому что это не следует ни за одной из допустимых форм. Другие директивы следуют за допустимыми формами после применимых макро-замен.

Проверяйте информацию

Группа: предварительная обработка директив
Категория: необходимый
Введенный в R2013b