8.1.6四边形
编写Autoconf宏时,有时可能需要生成难以用标准表达的特殊字符自动转换引用规则。例如,您可能需要输出正则表达式'[^[]',它匹配除'之外的任何字符[’.此表达式包含不平衡的括号,因此无法轻松放置到M4宏中。
此外,还有一些m4sugar宏(例如m4_拆分
和m4_展开
)内部还使用特殊标记常规引号字符。如果这些宏的参数包含文字字符串'-=<{('或')}>=-',宏可能表现不正确。
您可以使用以下方法之一解决这些问题四边形:
- ‘@<:@'
‘['
- ‘@:>@'
‘]'
- ‘@S公司|@'
‘$'
- ‘@%:@'
‘#'
- ‘@{:@'
‘('
- ‘@:}@'
‘)'
- ‘@&t吨@'
膨胀到什么都没有。
四边形在翻译过程的后期被替换,之后4米
是运行的,所以它们不会妨碍M4的引用。例如,字符串“^@<:@',独立于其报价,显示为“^['在输出中。
可以使用空四边形:
名称'@&t吨@“由Paul Eggert建议:
我应该相信“@&t吨@“双关语。“&'是我的自己的发明,但t吨'来自ALGOL68C编译器,由Steve Bourne(著名Bourne shell)编写,以及使用“公吨'表示空字符串。在C中,它将看起来像是:
当然,源代码是用Algol 68编写的。
我不知道他从哪里来公吨来自:可能是他自己的发明,我想这可能是关于当时的剑桥大学计算机实验室。