Consider the following code snippet
#include #define A -B #define B -C #define C 5 int main() { printf(\"The value of A is %d\\n\", A); r
The preprocessor introduces a space in-between the expansion of B and C:
B
C
#define A -B #define B -C #define C 5 A
with output (generated via cpp < test.c)
cpp < test.c
# 1 "test.c" # 1 "" 1 # 1 "" 3 # 329 "" 3 # 1 "" 1 # 1 "" 2 # 1 "test.c" 2 - -5