It's a common misconception that in C, whitespace doesn't matter. I can't imagine somebody hasn't come up with this in GNU C: #include <stdio.h> #define CAT_IMPL(c, d) (c ## d) #define CAT(c, d) CAT_IMPL(c, d) #define x CAT(a, __LINE__) int main() { int a9 = 2, a10 = 0; printf("%d\n", x == x + 2); return 0; } Prints `1`.