ExceptionsMacros remain the only solution for a few important tasks, such as #include guards (see Item 24), #ifdef and #if defined for conditional compilation, and implementing assert (see Item 68). For conditional compilation (e.g., system-dependent parts), avoid littering your code with #ifdefs. Instead, prefer to organize code such that the use of macros drives alternative implementations of one common interface, and then use the interface throughout. You may want to use macros (cautiously) when the alternative is extreme copying and pasting snippets of code around. We note that both [C99] and [Boost] include moderate and radical extensions, respectively, to the preprocessor. ![]() |