Макрос 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 >

0 ответов

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