Here is the test code: typedef struct { int ele; } tstruct; #define TST(r,t) r##t = 1 void test() { tstruct ts; TST(ts,.ele); } It generates the error: "error: pasting "ts" and "." does not give a valid preprocessing token" In previous versions of compiler (eg gcc-3.2.2) this generated a warning and could therefore be ignored as another piece of unhelpful compiler output. But now it is a error (but it isn't!) which stops compilation.
This has been an error since 3.0.x. And it is an error in your code. *** This bug has been marked as a duplicate of 7976 ***