是否可以让gnucpp保留include宏

Is it possible to let gnu cpp preserve include macro?

本文关键字:保留 include gnucpp 是否      更新时间:2023-10-16

我正在使用gnu cpp进行一些测试,希望它能保留#include宏,同时扩展其他用户定义的宏。有可能吗?下面是一段代码(foo.c):

#include <stdio.h>
#define NEWLINE(str) str "n"
int main(){
puts(NEWLINE("foo"));
}

我希望cpp foo.c的结果是:

#include <stdio.h>
int main(){
puts("foon");
}

您可以使用脚本注释掉每个#include,运行cpp,然后删除这些注释。

如果我理解正确,您希望使用预处理器只预处理某些部分,而不预处理其他部分。这通常是不可能的。唯一的方法是向源添加条件,即在要展开的零件周围使用例如#ifdef#endif,并在命令行上将define传递给预处理器。

不,这是不可能的。然而,行信息通常在预处理器输出中以#开头的行中可用。

你可以使用一些其他的预处理器,比如gpp