Preprocessor macros debugging

John Love-Jensen eljay@adobe.com
Fri Dec 1 20:03:00 GMT 2006


Hi Peter,

> Is there any tool, switches to cpp or a relatively simple way to alter
> cpp sources so I can get a dump of #defined macros?

I use this trick:

You can generate a list of the built in defines by doing this:

echo '' | gcc -E -dM -x c - | sort

echo ''   -- for our mock empty source file
gcc       -- our favorite toolchain driver (or g++)
-E        -- preprocess only
-dM       -- display defines
-x c      -- treat as C (or -x C++)
-         -- use stdin as the source file
sort      -- put the defines in more human readable order

You can use that trick with particular #include files to see what the
vestigial #defines are (vestigial because it won't list #undef'd
identifiers).

You can do the same thing for, say, Foo.c by doing this:

gcc -E -dM -x c Foo.c | sort

Using some shell magic, you can eliminate the "empty source" pre-defines
from the remainder of what's introduced (and not #undef'd) in Foo.c.

If you are using C++, use g++ and -x c++.

HTH,
--Eljay



More information about the Gcc-help mailing list