This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]