是否可以让gnu cpp保留包含宏?

时间:2012-12-18 08:15:41

标签: c++ c gnu c-preprocessor

我正在使用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("foo\n");
}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

您可以使用其他预处理器,例如: gpp

答案 2 :(得分:0)

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

相关问题