Есть ли способ перечислить все определения препроцессора C? - PullRequest
1 голос
/ 03 марта 2012

Есть ли способ перечислить все определения препроцессора C?

Я на Mac с скомпилированным из источника gcc и

#if defined __APPLE__
#error "Apple"
#else
#error "Ahh"
#endif

дает мне:

error: #error "Ahh"

мои параметры конфигурации компиляции:

${PWD}/../gcc/configure --prefix="${PWD}/../build/" --exec-prefix="${PWD}/../build/" --datadir="${PWD}/../build/" --target=avr --enable-languages=c --disable-libssp --disable-lto --disable-nls --disable-libgomp --disable-gdbtk --disable-threads --enable-poison-system-directories

1 Ответ

3 голосов
/ 03 марта 2012

Если вы используете gnu cpp, вы можете передать параметр -dM для генерации всех определенных макросов.То есть:

$ cpp -dM foo.c

расскажет вам все, что определено для foo.c.Будут добавлены дополнительные определения, передаваемые в командной строке командой make, и, возможно, больше вещей в config.h, но если вы возьмете вывод команды make и перезапустите команды с добавлением -Xpreprocessor -dM, вы должны увидеть все.

...