// should expand in '. name ;'
M(, name)
2:#define M(a, b) . a ## b ;
^ Invalidly glued ".name"
// should expand in '. name ;'
M(name,)
6:// should expand as '. name ;'
^ Invalidly glued "name;"
In both cases, the preprocessor does not mark that there is an empty token in the token sequence.
When processing ##, it wrongly takes the nearest token (on the left in the 1st case, on the right in the 2nd case) and this raises an error because the token concatenation produces an invalid new token.
I suspect this one is derived from closed #52
In both cases, the preprocessor does not mark that there is an empty token in the token sequence. When processing ##, it wrongly takes the nearest token (on the left in the 1st case, on the right in the 2nd case) and this raises an error because the token concatenation produces an invalid new token.
(this makes fail test 00202 of the C test suite)