我正在使用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");
}
答案 0 :(得分:1)
您可以使用脚本注释掉每个#include,运行cpp然后删除这些注释。
答案 1 :(得分:0)
不,这是不可能的。但是,行信息通常在预处理器输出中以#
开头的行中提供。
您可以使用其他预处理器,例如: gpp
答案 2 :(得分:0)
如果我理解正确,您希望使用预处理器仅预处理某些部分而不预处理其他部分。这通常是不可能的。唯一的方法是向源添加条件,即使用例如要扩展的部分周围有#ifdef
和#endif
,并将命令行上的define传递给预处理器。