...
Parenthesizing all variable names the in the CUBE()
macro allows it to expand correctly (when invoked in this manner).
...
However, if a parameter appears several times in the expansion, the macro may not work properly if the actual argument is an expression with side effects. Given the CUBE()
macro above, the invocation:
Code Block |
---|
int a = 81 / CUBE(i++); |
expands to:
Code Block |
---|
int a = 81 / (i++ * i++ * i++); |
...