Because a macro in C&#x2F;C++ is just text expansion, the given implementation will evaluate its arguments more than once, which will not be obvious at the &quot;call&quot; site and could have unintended consequences if the expressions have side-effects.