Macros 如何在M4中嵌套宏定义?

Macros 如何在M4中嵌套宏定义?,macros,m4,Macros,M4,我想定义一个可以定义更多宏的宏,如下所示: define(`master_macro', `foreachq(`slave_macro', `$*', define(`slave_macro', ...)' 然后我可以使用master\u宏将更类似的slave\u宏s定义为: master_macro(m1, m2, m3, ...) 我之所以需要它,是因为当我编写M4宏时,slave\u宏的编号和名称是未知的。您所要求的肯定可以实现。下面是一个例子: $ cat file changequ

我想定义一个可以定义更多宏的宏,如下所示:

define(`master_macro',
`foreachq(`slave_macro', `$*',
define(`slave_macro', ...)'
然后我可以使用
master\u宏
将更类似的
slave\u宏
s定义为:

master_macro(m1, m2, m3, ...)

我之所以需要它,是因为当我编写M4宏时,
slave\u宏
的编号和名称是未知的。

您所要求的肯定可以实现。下面是一个例子:

$ cat file
changequote(`[',`]')dnl
define([factory],[dnl
define($1,banana)dnl
define($2,split)dnl
])dnl
factory(hello,world)dnl
hello world
$ m4 file
banana split

我认为问题在于您使用未定义的宏
foreachq

,或者是否有允许可编程宏定义的宏处理器?我看到了Ruby在这方面的潜力,但我需要写一个吗?我已经在Ruby中实现了一个可以完成这项任务的试用宏处理器。您定义了
foreachq
?gnu m4文档中给出的示例没有描述m4内置设备
foreachq
是一个示例宏,其定义在示例中提供。