Preprocessor error when defining =
c, c-preprocessor
Solution
The `==` is a single token, it cannot be split in half. You should run `gcc -E` on your code
From GCC manual pages:
`-E` Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output.
Input files that don't require preprocessing are ignored.
For your code `gcc -E` gives the following output
if(x= =6)
printf("X == 6\n");
if(y= =6)
printf("Y==6\n");
The second `=` is what causes the error message `expected expression before ‘=’ token`
Problem
I was trying some awkward preprocessing and came up with something like this: ``` #include <stdio.h> #define SIX =6 int main(void) { int x=6; int y=2; if(x=SIX) printf("X == 6\n"); if(y=SIX) printf("Y==6\n"); return 0; } ``` gcc gives me the errors: test.c: In function ‘main’: test.c:10:8: error: expected expression before ‘=’ token test.c:12:8: error: expected expression before ‘=’ token Why is that?