MISRA C:2012 Rule 20.14

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

Описание

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

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

Объяснение

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

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

Дополнительное сообщение в отчете

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

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

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

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

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

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

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

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