8.1.6四边形

编写Autoconf宏时,有时可能需要生成难以用标准表达的特殊字符自动转换引用规则。例如,您可能需要输出正则表达式'[^[]',它匹配除'之外的任何字符[’.此表达式包含不平衡的括号,因此无法轻松放置到M4宏中。

此外,还有一些m4sugar宏(例如m4_拆分m4_展开)内部还使用特殊标记常规引号字符。如果这些宏的参数包含文字字符串'-=<{('或')}>=-',宏可能表现不正确。

您可以使用以下方法之一解决这些问题四边形:

@<:@'

['

@:>@'

]'

@S公司|@'

$'

@%:@'

#'

@{:@'

('

@:}@'

)'

@&t吨@'

膨胀到什么都没有。

四边形在翻译过程的后期被替换,之后4米是运行的,所以它们不会妨碍M4的引用。例如,字符串“^@<:@',独立于其报价,显示为“^['在输出中。

可以使用空四边形:

名称'@&t吨@“由Paul Eggert建议:

我应该相信“@&t吨@“双关语。&'是我的自己的发明,但t吨'来自ALGOL68C编译器,由Steve Bourne(著名Bourne shell)编写,以及使用“公吨'表示空字符串。在C中,它将看起来像是:

char const mt[]=“”;

当然,源代码是用Algol 68编写的。

我不知道他从哪里来公吨来自:可能是他自己的发明,我想这可能是关于当时的剑桥大学计算机实验室。