I am confused between the if/else and #if/#else/#endif constructs.
if
else
#if
#else
#endif
if(...) and else(...) conditions are evaluated at runtime. #if, #else are evaluated before compile time by the preprocessor.
if(...)
else(...)