You can use #ifdef (if defined) to conditionally compile features into your application. You can use #ifndef (if not defined) for various things, but it is ofen used as guards in your header so that they do not get included more than once in any single .c/.cpp file. You use #undef to undefine a symbol or macro, and #define to define a symbol or create a macro:
Code:
#ifndef __SOME_HEADER_H__
#define __SOME_HEADER_H__
#ifdef WIN32 // if we are compiling on a Windows system...
#include <windows.h>
#endif
#ifdef DEBUG // Could possibly pass to compiler using -DDEBUG parameter
#define TRACE(msg) printf(msg);
#else
#define TRACE(msg)
#endif
#undef SOME_MACRO_OR_CONSTANT_YOU_NO_LONGER_WANT_DEFINED
#endif // __SOME_HEADER_H__