Hi!
The second program also works with Clang, gcc etc., but not with tcc.
It tries to use stringification with a backslash, indirectly:
#include <stdio.h>
#define PRINT_(X) puts(#X);
#define PRINT(X) PRINT_(X)
int main(void)
{
PRINT(\\)
return 0;
}
Here the workaround is to use no indirection, to use PRINT_(\\) instead of PRINT(\\) or to change the definition of PRINT to #define PRINT(X) puts(#X), in which case the program prints the backslash as expected. However this isn't a good workaround, as avoiding indirections in the macros can sometimes be very annoying, luckily it worked in my program though.
In this case it might be an issue with the preprocessor and not the parser.
Best regards,
Patrick