Правило 20.14 MISRA C:2012

Весь #else, #elif и #endif директивы препроцессору должен находиться в том же файле как #if, #ifdef или #ifndef директива, с которой они связаны

Описание

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

Весь #else, #elif и #endif директивы препроцессору должен находиться в том же файле как #if, #ifdef или #ifndef директива, с которой они связаны.

Объяснение

Когда директивы условной компиляции включают или исключают блоки кода и распространены по нескольким файлам, беспорядок возникает. Если вы отключаете директиву #if в том же файле, вы уменьшаете визуальную сложность кода и возможности ошибки.

Если вы отключаете директивы #if в том же файле, можно использовать директивы #if во включенных файлах

Обменивайтесь сообщениями в отчете

  • '#else' не в условном выражении.

  • '#elseif' не в условном выражении.

  • '#endif' не в условном выражении.

    Неотключенная условная директива.

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

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

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

Группа: предварительная обработка директив
Категория: необходимый
Категория AGC: необходимый
Язык: C90, C99