0

如何使用 gcc 在包含(例如)python/php/perl 代码的文件中扩展宏?

有一个文件包含:

#define foo very important stuff
#define feast Christmas

I should take care of some foo for feast.

我曾尝试使用:

$ gcc -x c++ -E - < text.txt > output.txt

但它显示了这个:

$ cat output.txt
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"



I should take care of some very important stuff for Christmas.

如何避免 gcc 添加这些注释和(如果可能)额外的换行符?

4

2 回答 2

1

您应该从GNU C 预处理器的在线文档中了解此警告

C 预处理器仅适用于 C、C++ 和 Objective-C 源代码。过去,它被滥用为通用文本处理器。它将阻塞不遵守 C 的词法规则的输入。例如,撇号将被解释为字符常量的开头,并导致错误。此外,您不能依赖它保留对 C 系列语言不重要的输入特征。如果对 Makefile 进行了预处理,则所有硬标签都将被删除,并且 Makefile 将无法工作。

输出中的“#”行可能是您遇到的最少问题。

使用其他工具(例如 m4)可能会做得更好。

于 2010-12-23T12:19:30.863 回答
0

我不知道 gcc 是否有特定的选项。

您可以使用 grep 进行后处理

$ gcc -x c++ -E - < text.txt | grep -v '^#' > output.txt
于 2010-12-23T12:10:12.340 回答