8.1.2一次宏调用

让我们继续进行活动字符和宏之间的交互使用这个小宏,它只返回第一个参数:

定义([汽车],[1]美元)

上面的两对引号不是定义; 相反,当它被高层理解时试图找到定义因此,假设汽车尚未定义,它相当于写入:

定义(汽车,1美元)

但是,虽然可以接受配置.ac避免不必要的引用,对于Autoconf宏来说,这是一种不好的做法,因为两者都必须更多健壮且崇尚完美风格。

在顶层,只有两种可能性:报价或不报价:

汽车(foo、bar、baz)foo公司[汽车(foo,bar,baz)]汽车(foo、bar、baz)

让我们注意一下特殊字符:

汽车(#)错误→参数列表中的EOF

右括号隐藏在注释中;带着一个假设引用的话,高层是这样理解的:

汽车([#)]

当然,适当的报价可以解决问题:

汽车([#])⇒#

以下是更多示例:

汽车(foo,bar)foo公司汽车([foo,bar])foo,酒吧汽车((foo,bar))(foo,bar)汽车([(foo],[bar)])(foo)定义([a],[b])汽车(a)b条汽车([a])b条汽车([[a]])汽车([[[a]]])[a]