2013-05-17 42 views
1

在M4语言中,有没有一种方法可以将字符串参数与两个值进行比较,如果这两个值中的任何一个匹配,则执行X,执行其他Y?字符串比较和宏OR条件

例如,如果MACTEST宏的参数是'ABC'或'XYZ',则显示'match',否则显示'nomatch'...看起来像eval是用于比较数字参数而不是字符串..有什么等价的字符串?

define(MACTEST, ifelse(eval($1==ABC)|eval($1==XYZ), 1, match, nomatch)') 

MACTEST(ABC) 

回答

1

两种可能性(underquoted为清楚起见):

define(MACTEST,`ifelse($1,ABC,match,$1,XYZ,match,no-match)')dnl 
define(MACTEST,`ifelse(regexp($1,ABC\|XYZ),-1,no-match,match)')dnl 
+0

感谢威廉...完美的作品! – user1500970