Как вложить определения макросов в M4?

Я хотел бы определить макрос, который может определить больше макросов как:

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

тогда я могу использовать master_macro определить больше похожих slave_macros как:

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

Причина, почему я нуждаюсь в этом, состоит в том, что число и имена slave_macro неизвестно, когда я пишу макросы M4.

1 ответ

То, что вы просите, безусловно, может быть сделано. Вот пример:

$ 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,

Другие вопросы по тегам