This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Preprocessor macros debugging
- From: John Love-Jensen <eljay at adobe dot com>
- To: Peter Cech <pcech at vision dot ee dot ethz dot ch>, MSX to GCC <gcc-help at gcc dot gnu dot org>
- Date: Fri, 01 Dec 2006 14:03:33 -0600
- Subject: Re: Preprocessor macros debugging
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