#if defined()
#if defined(SOMETHING)
offers more flexibility than #ifdef SOMETHING
.
For example you can use negation, and and or : #if defined(SOMETHING) && !defined(SOMETHING_ELSE)
You can also it with #elif
:
#if defined(MACRO1)
// ...
#elif defined(MACRO2)
// ...
#elif defined(MACRO3)
// ...
#else
// ...
#endif