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