I think that, once upon a time, the preprocessor *did* #define unix unix. But at the point that cpp began accepting #if in addition to #ifdef, the default value of defined parameters changed from themselves to 1. You can use "1" in both #if and #ifdef.