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: Требуется