2012-11-29 60 views
0

我想定义可以定义多个宏宏:如何在M4中嵌套宏定义?

define(`master_macro', 
`foreachq(`slave_macro', `$*', 
define(`slave_macro', ...)' 

然后我可以使用master_macro的定义更多类似slave_macro S:

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

我之所以需要这个是当我编写M4宏时,slave_macro的编号和名称是未知的。

+0

或者是否有任何允许可编程宏定义的宏处理器?我看到了Ruby的这种功能的潜力,但是我需要写一个吗? –

+0

我已经在Ruby中实现了一个试用宏处理器,可以完成这项任务。 –

+0

您是否定义了'foreachq'? gnu m4文档中给出的示例并未描述m4内建; 'foreachq'是一个示例宏,其定义在示例中提供。 –

回答

0

你要求的东西当然可以做到。这里有一个例子:

$ 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的使用。