Is there a way to make the GNU C Preprocessor, cpp (or some other tool) list all available macros and their values at a given point in a C fil
I don't know about a certain spot in a file, but using:
$ touch emptyfile
$ cpp -dM emptyfile
Dumps all the default ones. Doing the same for a C file with some #include
and #define
lines in it includes all those as well. I guess you could truncate your file to the spot you care about and then do the same?
From the man page:
-dCHARS
CHARS
is a sequence of one or more of the following characters, and must not be preceded by a space. Other characters are interpreted by the compiler proper, or reserved for future versions of GCC, and so are silently ignored. If you specify characters whose behavior conflicts, the result is undefined.
M
Instead of the normal output, generate a list of#define
directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of finding out what is predefined in your version of the preprocessor. Assuming you have no file foo.h, the commandtouch foo.h; cpp -dM foo.h
will show all the predefined macros.
If you use
-dM
without the-E
option,-dM
is interpreted as a synonym for-fdump-rtl-mach
.
D
LikeM
except in two respects: 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.
N
Like D, but emit only the macro names, not their expansions.
I
Output#include
directives in addition to the result of preprocessing.