我想查看由我正在使用的编译器调用定义的所有宏。有没有办法做到这一点?我在手册中看到它说您可以使用cpp -dM
,但这对我不起作用。也许我做错了什么?
当我运行时:
cpp -dM
我从预处理器中根本没有得到任何输出。如果我尝试-dM
在 gcc 上添加一个选项,我不会注意到任何区别。
我想查看由我正在使用的编译器调用定义的所有宏。有没有办法做到这一点?我在手册中看到它说您可以使用cpp -dM
,但这对我不起作用。也许我做错了什么?
当我运行时:
cpp -dM
我从预处理器中根本没有得到任何输出。如果我尝试-dM
在 gcc 上添加一个选项,我不会注意到任何区别。
您可以使用:
gcc -dM -E - < /dev/null
请注意,您还可以使用以下命令获取编译器宏:
touch bla.c && gcc -dM -E bla.c
例如在我的电脑上:
$ touch bla.c && gcc -dM -E bla.c | wc -l
486
$ gcc -dM -E - < /dev/null | wc -l
124
$
默认情况下,cpp -dM
将从标准输入读取其输入文件并写入标准输出。由于您没有尝试预处理任何输入,因此您可以使用以下方法将空输入传递给它/dev/null
:
# Option 1
cpp -dM < /dev/null
# Optio n2
cpp -dM /dev/null
在 Windows 上,您可以使用NUL
伪文件而不是/dev/null
.