Впринципе что такое условная компиляция – понятно, наверное, всем.
Пишется блок:#ifdef __feature
// далее блок кода, который скомпилируется
// только если где-то раньше был задефайнен __feature
#elseif
// понятно – блок кода, который скомпилируется
// если __feature не задефайнена
#endif
так же есть #ifndef - тогда будет всё наоборот.