AUTOSAR C++14 Rule A16-6-1

Директива #error не должна использоваться

Описание

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

Директива #error не должна использоваться.

Объяснение

Вы обычно используете #error директива путем объединения его с #if или подобная директива, чтобы заставить компиляцию перестать работать и выпустить сообщение, когда условие не соблюдают. Однако вы не можете применить #error к шаблонам. Директивы препроцессору не выполняют рычажное устройство, вводят средство проверки, перегрузку и другие функции C++ и #error не будет оценен как вычет шаблона на экземпляр.

Вместо этого используйте static_assert для проверки ошибки времени компиляции. Статические утверждения предоставляют все преимущества функций C++ и делают код более ясным.

Реализация Polyspace

Polyspace® отмечает все использование #error директива.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

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

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