gpt4 book ai didi

c - 在预处理输出中保留包含语句

转载 作者:行者123 更新时间:2023-11-30 15:07:15 24 4
gpt4 key购买 nike

假设我有一个将 TARGET 定义转换为 FEATURE 定义的文件:

// File options.h
#ifdef TARGET_A
#define FEATURE_X
#endif
#ifdef TARGET_B
#define FEATURE_Y
#endif
struct foo {
int a;
int b;
};

我有一堆文件 ifdef'ed with FEATURE 定义:

// File foo.c
#include "options.h"
#ifdef FEATURE_X
int x;
#endif
#ifdef FEATURE_Y
int y;
#endif

那么,如何预处理 foo.c 以便它处理 include 语句,但将其保留在文件中?

类似于:

$ some-pre-process-tool -DTARGET_A -I. -o foo.pp.c foo.c
$ cat foo.pp.c
// File foo.c
#include "options.h"
int x;
$

最佳答案

首先,为什么要在预处理代码中保留#include?您是否打算再次通过预处理器运行它,或者它只是在读取结果时有帮助?

您可以使用 gcc 标志 -Wp,-dI 获得您想要的内容。 -dI 记录如下:https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#index-dI-1113

请注意,输出文件还将包含您包含的文件及其所有子文件 #include 中的 #include

关于c - 在预处理输出中保留包含语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38372317/

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