gpt4 book ai didi

c - 如何使用 gcc 显示预处理的宏(仅由用户定义)?

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:30 24 4
gpt4 key购买 nike

我知道“gcc -E main.c”选项给出了所有值的预处理输出。有没有办法只扩展用户定义的宏?

例如

#define MACRO(z) z+z

c = a + (MACRO(z))

当我使用这个假设的 gcc 选项时,我应该看到:

c = a + (z+z)

我不想扩展任何其他系统定义的宏。 GCC 中有选项吗?

最佳答案

实际上你想要做的是让预处理器忽略打开包含文件的错误。我认为有一个编译器具有这样的功能,但 GCC 不是。 (或者我可能将它与 GCC 功能混淆,在生成依赖文件时忽略丢失的包含文件。)

然而,您可以做的是创建一个空文件的影子目录,该目录与系统 header 的所有名称和子目录相匹配。然后,您可以使用 -nostdinc(忽略系统包含目录)和 -I 选项(指向您的新影子目录)。

影子目录可以用类似的东西创建:

mkdir $HOME/tmp/emptystdinc
cd $HOME/tmp/emptystdinc
find /usr/include -type d -print | sed 's|/usr/include|.|' | xargs mkdir -p
find /usr/include -type f -print | sed 's|/usr/include|.|' | xargs touch

现在看看你的后处理代码是什么样子的:

cc -E -nostdinc -I$HOME/tmp/emptystdinc test.c

祝你好运!这对我来说很好用!

关于c - 如何使用 gcc 显示预处理的宏(仅由用户定义)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385884/

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