gpt4 book ai didi

c - 根据指定的头文件扩展C中的宏

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

我有一个源文件foo.c 和一个头文件bar.h。我怎样才能扩展 macrosbar.h 中而不扩展 macros在其他头文件中?

$ cat foo.c

#include <stdio.h>
#include "bar.h"

int main()
{
#ifdef BAR_FUNC
printf("bar func\n");
#else
printf("foo func\n");
#endif
return 0;
}

$ cat bar.h

#define BAR_FUNC 1

我想要的是:

$ EXPAND_MAGIC foo.c

#include <stdio.h>

int main()
{
printf("bar func\n");
return 0;
}

如果我使用 `gcc -E , 它扩展了 <stdio.h>以及。但我只想在bar.h 中扩展宏。 gcc 中有这样做的选项吗?如果没有,是否有任何其他工具可以进行此类预处理?

更新:上面的foo.c/bar.h只是一个例子。实际上,我在 bar.h 中定义了数百个宏(请考虑在一个相当大的项目中由 autoconf 生成的 config.h)。我想要的是在超过 10K 的源文件中扩展所有()这些宏。有什么建议吗?

最佳答案

您可能会查看 this question 的答案中提到的程序 sunifdef .它允许您在命令行上指定宏定义,并适本地消除 #ifdef 行。请注意,它不进行宏扩展。

就是说,您不应该将这样的工具用于一般开发,但它对于解码或清理因许多未使用的 #ifdefs 而变得困惑的代码非常有用年。

关于c - 根据指定的头文件扩展C中的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13133658/

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