cpp: Misnesting

1 
1 3.10.1 Misnesting
1 -----------------
1 
1 When a macro is called with arguments, the arguments are substituted
1 into the macro body and the result is checked, together with the rest of
1 the input file, for more macro calls.  It is possible to piece together
1 a macro call coming partially from the macro body and partially from the
1 arguments.  For example,
1 
1      #define twice(x) (2*(x))
1      #define call_with_1(x) x(1)
1      call_with_1 (twice)
1           ==> twice(1)
1           ==> (2*(1))
1 
1    Macro definitions do not have to have balanced parentheses.  By
1 writing an unbalanced open parenthesis in a macro body, it is possible
1 to create a macro call that begins inside the macro body but ends
1 outside of it.  For example,
1 
1      #define strange(file) fprintf (file, "%s %d",
1      ...
1      strange(stderr) p, 35)
1           ==> fprintf (stderr, "%s %d", p, 35)
1 
1    The ability to piece together a macro call can be useful, but the use
1 of unbalanced open parentheses in a macro body is just confusing, and
1 should be avoided.
1