有没有办法列出所有 C 预处理器定义?
我在 Mac 上使用从源代码编译的 gcc 和
#if defined __APPLE__
#error "Apple"
#else
#error "Ahh"
#endif
Run Code Online (Sandbox Code Playgroud)
正在给我:
error: #error "Ahh"
Run Code Online (Sandbox Code Playgroud)
我的编译配置选项是:
${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
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 gnu cpp,则可以传递该选项-dM来发出所有定义的宏。那是:
$ cpp -dM foo.c
会告诉你为 foo.c 定义的所有内容。make 将在命令行上传递额外的定义,并且可能在 config.h 中传递更多内容,但是如果您获取 make 的输出并重新运行添加的命令,-Xpreprocessor -dM您应该会看到所有内容。