2012-11-29 97 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的使用。