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

', ",/* или//символы не должны происходить на имя заголовочного файла

Описание

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

', ",/* или//символы не должны происходить на имя заголовочного файла.

Объяснение

Вы включаете заголовочные файлы в исходный файл путем включения его имени между разделителями <> или "". Используя символы ', ", /*, или // между разделителями < и > неопределенное поведение. Используя символы ', /*, или // между " разделители также приводят к неопределенному поведению. В зависимости от вашей среды и компилятора, с помощью этих символов на имя программы для работы с файлами заголовка может привести к неожиданному поведению.

Избегайте символов ', ", /*, или // на имя заголовочного файла.

Реализация Polyspace

Polyspace® повышает нарушение этого правила, если имя заголовочного файла включает один из этих символов:

  • '

  • "

  • /*

  • //

Если вы используете символьный " между разделителем ", Polyspace интерпретирует фрагмент имени заголовка между двумя последовательными " разделители как имя заголовочного файла. Например, в этом коде,

#include "foo\".h"
Polyspace интерпретирует foo\ как имя заголовка. В таких случаях Polyspace не повышает нарушение этого правила, но потому что компилятор ищет заголовочный файл, который не существует, вы можете получить предупреждение компиляции.

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

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

Примеры

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

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

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

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

#include "dummy/*file" //noncompliant
#include "dummy//file" //nonCompliant

в этом примере Polyspace отмечает использование символов ', ", /*, или // на имена заголовочного файла.

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

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