The short answer is that you need to use a different variable name.
Longer answer: This is a hold-over from the ancient days of C, pre-ANSI. It allowed the preprocessor to determine at compile time which system is being used to compile the program and on which system the final program will be run.
unix, vax, linux, and a few others will be reserved words until the next standard of C, but they should be avoided.
The new standards state that reserved words must begin with two underscores "_", or a single underscore followed by an uppercase letter. This is intended to free up all valid names for programmers to use as variables.
Now another part of this that you need to understand is that gcc doesn't conform to standards unless you tell it to, and even then it's still a bit off.
Here is a link to the gcc standards that explains this point in further detail: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Standards.html