...
In this non-compliant example, putc() is called with an expression as the stream argument. If putc() is implemented as a macro, the expression could can be evaluated several times within the macro expansion of putc() with unintended results.
...