...
The do-while
loop will always be executed exactly once.
This macro still violates the recommendation PRE12-C. Do not define unsafe macros, because both macro arguments are evaluated twice. It is expected that the arguments are simple lvalues.
Risk Assessment
Improperly wrapped statement macros can result in unexpected and difficult to diagnose behavior.
...