A # Not Followed by a Macro Argument

(ISO C, §6.10.3) The C compiler can accept # tokens that do not appear before arguments in macro definitions.

Listing 1. Preprocessor Macros Using # Without an Argument

#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”.