cpp: Newlines in Arguments

1 
1 3.10.7 Newlines in Arguments
1 ----------------------------
1 
1 The invocation of a function-like macro can extend over many logical
1 lines.  However, in the present implementation, the entire expansion
1 comes out on one line.  Thus line numbers emitted by the compiler or
1 debugger refer to the line the invocation started on, which might be
1 different to the line containing the argument causing the problem.
1 
1    Here is an example illustrating this:
1 
1      #define ignore_second_arg(a,b,c) a; c
1 
1      ignore_second_arg (foo (),
1                         ignored (),
1                         syntax error);
1 
1 The syntax error triggered by the tokens 'syntax error' results in an
1 error message citing line three--the line of ignore_second_arg-- even
1 though the problematic code comes from line five.
1 
1    We consider this a bug, and intend to fix it in the near future.
1