Removes comments of the form /* */ and //
Reads preprocessing commands starting with the hash (#) sign. Examples are: #ifdef, #if, #elsif, #endif, #define
Replace macros for constants with the real value: #define SIZE 100 becomes 100.
The advantage of a preprocessing phase is e.g. that conditional compilation can take place. This means that code that is exclude with a #ifdef ....#endif bracket is NOT compiled and therefore does not show up in the final executable. This allows different code for production and test versions or different platforms.