一个简单的GNU m4问题,但我找不到正确的答案。我想打印开始/结束代码部分的降价标题:
```
echo Hello
```
如何创建包含3个反引号的GNU M4宏?
之类的东西define(`md_code',````')
md_code
echo Hello
md_code
答案 0 :(得分:6)
得到了Eric Blake在M4邮件列表上的答案:http://lists.gnu.org/archive/html/m4-discuss/2015-04/msg00004.html
changequote是你的朋友。这样就可以了:
define(`md_code', changequote([,
])[changequote([,])```changequote(`,')]changequote(`,'))
我必须两次更改引号:一次围绕宏定义,因为 定义本身打算以不平衡的方式使用(反引号);和 再次在宏观扩张中,因为扩张将在一个增长中产生反弹 不平衡的方式;对于每个更改的报价,原始报价必须是 恢复。这假设默认报价保持在(反引号)' 整个m4运行。
虽然在您的情况下,我建议事先使用changequote 别的东西,全局在这些引用下写下你的输入 规则而不是默认(反引号)'引用规则。记住这一点 autoconf故意以[]作为引用字符, 因为他们很可能在产出上保持平衡,而不是 (反叛)和'在shell脚本中没有出现平衡对。事实上, 尽管如此,选择2字节或3字节的引号字符串更不明确 然后需要更多打字。