Данное диагностическое правило основано на руководстве 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))
Данная диагностика классифицируется как:
|