Правило 5.5 MISRA C:2012

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

Описание

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

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

Объяснение

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

Polyspace® рассматривает два имени как отличные, если существует различие между их первыми 63 символами. Если различие между двумя именами происходит только вне первых 63 символов, они могут быть легко приняты друг за друга. Удобочитаемость кода уменьшается. Для C90 различие должно произойти между первым 31 символом. Чтобы использовать проверку правил C90, используйте значение c90 для опции C standard version (-c-version).

Обменивайтесь сообщениями в отчете

Идентификатор 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: необходимый
Язык: C90, C99

Введенный в R2014b