https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109936
--- Comment #26 from Adam Wozniak <adam at wozniakconsulting dot com> --- (In reply to Jonathan Wakely from comment #19) > (In reply to Andreas Schwab from comment #10) > > It is a valid preprocessing token ("non-whitespace character that cannot be > > one of the above"). > > Ah right, yes. It's a preprocessing token, but is never converted to a > token, so doesn't need to be a keyword, identifier etc. i feel like it should work for stringification reasons too. e.g. #define X(x) #x const char *letterA = X(A); // this works const char *notequal = X(≠); // this does not