Content originally posted in LPCWare by hparracho on Wed Aug 13 03:22:36 MST 2014
The answer that TheFallGuy gave you basically sums it up perfectly.
The pre-processor is a macro processor and runs before compilation. It knows nothing about the language and it's types.
It only understands macros defined with the #define keyword and literal values.
So, if you want to test if a macro is defined you use #ifdef or #if defined(...)
If you want to test the value of a macro you use #if.
You can also test the value of literals like:
#if 1
or
#if 'a'
In C "TRUE/FALSE" are not literals, but in C++ "true/false" are.