gpt4 book ai didi

c - 为 GCC 运行 "light"预处理器

转载 作者:太空狗 更新时间:2023-10-29 16:35:35 24 4
gpt4 key购买 nike

有没有办法运行 GCC预处理器,但仅适用于用户定义的宏?

我有一些单行代码和一些 #ifdef 等条件语句,我想看看当这些代码被展开时我的代码是什么样子的。

实际上,包含得到扩展,我的 fprintf(stderr) 变成了 fprintf(((__getreeent())->_stderr),等等。

最佳答案

调用cpp直接,例如

$ cat >foo.c <<EOF
#define FOO
#ifdef FOO
foo is defined
#else
foo is not defined
#endif
EOF

$ cpp foo.c
# 1 "foo.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "foo.c"


foo is defined

当然,如果您包含任何 header ,那么这些 header 将包含在输出中。避免这种情况的一种方法可能是 grep -v#include 划线s(或者可能只是带有 #include < 并允许 #include " 的)。或者您可以指定 -nostdinc仅删除标准包含的选项(但可能会保留在本地库中,除非您指定包含路径,这样它们就不会被发现)——不过,这会警告缺少 header 。

编辑:或者使用预处理器本身使 header 的包含成为条件,将它们包装在类似 #ifndef TESTING_PREPROCESSOR 的内容中并使用 -DTESTING_PREPROCESSOR .

关于c - 为 GCC 运行 "light"预处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com