Макрос m4 не расширяется при передаче в качестве аргумента
У меня есть следующие два макроса для добавления и последующего расширения списка строк через запятую.
changequote([,])
define([lappend], [define([$1], ifdef([$1], {[changequote({,}){}$1{, }$2{}changequote([,])]}, $2))])dnl
define([lexpand], [changequote({,})$1{}changequote([,])])dnl
Для заполнения списка я вызываю макрос внутри списка аргументов другого макроса. Внешний макрос определяет макрос, который я хочу использовать во внутреннем макросе:
define([outer], [define([name], [$1]) $2])
define([inner], [lappend([my_list], [name :: $1]) $2])
Я называю эти макросы вот так
outer(first,
inner(one, foo)
inner(two, bar)
)
list = < lexpand([my_list]) >
Это дает следующий вывод (пустые строки удалены)
foo
bar
list = < name :: one, name :: two >
Почему макрос name
не расширен? Я ожидаю, что это:
list = < first :: one, first :: two >