exponenta event banner

MISRA C:2012 Правило 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.

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

Группа: идентификаторы
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b