1

我想知道是否有人使用通用预处理器来处理文本文件。

这个想法出现了,因为 Java 没有预处理器,但我想要条件代码编译等。

现在,进一步考虑这个想法,我不妨对需要频繁编辑的任何类型的文件使用通用预处理器,但所有编辑都以类似的方式进行。

现在,我想使用好的 ol' m4 ,因为我使用 C 预处理器并且有GPP,但是,那个在 2007 年停止开发。

我想要一些建议哪个预处理器更可取,如果可能的话,它应该采用与 C 预处理器采用相同方式的指令#define SOMETHING

由于 m4 不使用印记或其他东西,它可能会与其他代码冲突,当 m4 是要走的路时,我需要关于如何为每个指令加上印记或不同前缀或其他东西的建议。

4

2 回答 2

2

大多数 C/C++ 编译器允许您只运行预处理器并保存输出,并可用于通用输入。(对于 Visual C++,我相信选项是 /P)

但请记住,预处理器导致的问题与它们解决的问题一样多。C++ 和 Java 的设计者都在努力消除对使用预处理器的需求。例如,在 Java 中,代码如下:

if (true)
     CallThis();
else
     DoNotCallThis();

只会为CallThis()调用生成代码,而不为条件或 else 分支生成代码。(这不是实施质量问题 --- 它是 Java 语言定义的要求)。

于 2010-08-16T11:18:59.987 回答
0

对于 'sigil',使用 m4 的命令行选项为所有内置 m4 宏-P添加前缀。m4_然后你有m4_define,m4_divert等。

于 2015-05-08T06:32:21.883 回答