gpt4 book ai didi

m4 - 如何定义接受可变参数的 M4 宏?

转载 作者:行者123 更新时间:2023-12-02 05:01:48 25 4
gpt4 key购买 nike

如何定义接受可变数量参数并处理每个参数的 M4 宏?我看过“shift”和“foreach(来自示例)”宏,但似乎无法使用它们组合我自己的宏。感谢您的帮助。

define(UL, `wrap each arg in <li> tag, then wrap the whole output in <ul>')

UL(foo, bar, baz) #returns <ul><li>foo</li><li>bar</li><li>baz</li></ul>

最佳答案

我会提出这个作为解决方案,但我不保证它不包含引用错误。

define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>`$1'<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')', 
    `LI(`$1')IT(shift($@))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')

为了后代,这是我最初的解决方案,其中肯定包含引用错误:

define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>$1<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')',
`LI(`$1')IT(shift($*))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')

在第一个解决方案中,UL 的最终调用并不完全符合我的预期,但我对 m4 引用规则非常不确定,所以我真的不知道会发生什么,所以我怀疑有 引用错误。感谢帮助。

关于m4 - 如何定义接受可变参数的 M4 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com