Avoiding the Preprocessor
The preprocessor doesn’t know C/C++ syntax and can hide errors; the compiler should do all the work
All code resolves to a single line, making it hard to read and debug
The preprocessor can cause subtle, hard-to-find errors
C++ provides a number of features to make the preprocessor unnecessary