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?

Original source

Related problems