Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2546. MISRA. Expression resulting...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2546. MISRA. Expression resulting from the macro expansion should be surrounded by parentheses.

30 Май 2019

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Анализатор обнаружил потенциально возможную ошибку в записи макроса. Макрос и его параметры следует заключать в скобки.

В случае, когда параметры или само выражение не заключены в скобки, может быть нарушена задуманная последовательность действий после того, как макрос будет подставлен.

Пример кода, на который анализатор выдаст предупреждение:

#define DIV(x, y) (x / y)

Пример использования макроса, приводящего к ошибке:

Z = DIV(x + 1, y + 2);

В результате получим:

Z =(x + 1 / y + 2);

Чтобы избежать нарушения последовательности действий, этот макрос стоит переписать следующим образом:

#define DIV(x,y) ((x) / (y))

Данная диагностика классифицируется как:

  • MISRA-C-20.7
  • MISRA-CPP-16.0.6