首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义接受变量的M4宏?

如何定义接受变量的M4宏?
EN

Stack Overflow用户
提问于 2013-06-06 03:09:49
回答 1查看 662关注 0票数 2

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

代码语言:javascript
复制
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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 20:56:28

我将提出这一解决方案,尽管我不能保证它不包含引用错误。

代码语言:javascript
复制
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'')

对于后人来说,这是我最初的解决方案,其中肯定包含一个引用错误:

代码语言:javascript
复制
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引用规则非常不确定,以至于我真的不知道会发生什么,所以我怀疑其中存在引用错误。感谢你的帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16947929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档