V3526. AUTOSAR. Expression resulting from the macro expansion should be surrounded by parentheses.
Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.
Анализатор обнаружил потенциально возможную ошибку в записи макроса. Макрос и его параметры следует заключать в скобки.
В случае, когда параметры или само выражение не заключены в скобки, может быть нарушена задуманная последовательность действий после того, как макрос будет подставлен.
Пример кода, на который анализатор выдаст предупреждение:
#define DIV(x, y) (x / y)
Пример использования макроса, приводящего к ошибке:
Z = DIV(x + 1, y + 2);
В результате получим:
Z =(x + 1 / y + 2);
Чтобы избежать нарушения последовательности действий, этот макрос стоит переписать следующим образом:
#define DIV(x,y) ((x) / (y))
Данная диагностика классифицируется как:
|