MISRA C:2012 Rule 5.5

Идентификаторы должны отличаться от макросов имен

Описание

Определение правила

Идентификаторы должны отличаться от макро- имен.

Объяснение

Правило требует, чтобы имена макросов, которые существуют только до обработки, отличались от имен идентификаторов, которые также существуют после предварительной обработки. Сохранение различных имен и идентификаторов макросов помогает избежать путаницы.

Реализация Polyspace

Polyspace® рассматривает два имени как различные, если существует различие между их первыми 63 символами. В C90 различие должна быть между первыми 31 символами. Чтобы использовать проверку правил C90, используйте значение c90 для опции C standard version (-c-version). Вы можете изменить количество символов по сравнению с помощью опции -code-behavior-specifications. См. -code-behavior-specifications.

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

Идентификатор XX имеет те же значимые символы, что и макрос YY.

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

#define Sum_1(x, y) ( ( x ) + ( y ) )
short Sum_1;                    /* Non-compliant */

#define Sum_2(x, y) ( ( x ) + ( y ) )
short x = Sum_2 ( 1, 2 );       /* Compliant */

В этом примере Sum_1 - имя идентификатора и макроса. Sum_2 используется только в качестве макроса.

#define low_pressure_turbine_temperature_1 lp_tb_temp_1
static int low_pressure_turbine_temperature_2;   /* Non-compliant  */

В этом примере идентификатор low_pressure_turbine_temperature_2 имеет те же первые 31 символ, что и предыдущий макрос low_pressure_turbine_temperature_1.

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

Группа: Идентификаторы
Категория: Требуемая
Категория AGC: Требуется
Введенный в R2014b