(ISO C, §6.10.3) The C compiler can accept # tokens that do not appear before arguments in macro definitions.
#define add1(x) #x #1 // OK, but probably not what you wanted:
// add1(abc) creates "abc"#1
#define add2(x) #x "2" // OK: add2(abc) creates "abc2"
To use this feature, disable the ANSI Strict setting.
See also “Checking for Standard C and Standard C++ Conformity”.