GCC preprocessing

Today was day of fixing problems with the Linux build of our software. We normally develop and test the software in Solaris but we do nightly builds in Linux as well to maintain compatibility and to early catch portability issues. We receive an e-mail if the build is not successful so we were pretty confident everything was running smooth. The thing is, the machine was powered down! (probably since the last power cut).

So, when we kicked off the Linux build today it was broken. Phil went by the office to help fixing it and, of course, he did. We had exactly the same problem as described here.

To investigate the problem we used the -E and -dD options in the gcc compile command:

This option means nothing is done except preprocessing.
This option means that instead of the normal output, it does not include the predefined macros, and it outputs both the `#define' directives and the result of preprocessing. Both kinds of output go to the standard output file.

From the Preprocessor-Options section in the GCC manual.