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