我正在开发一个使用 M4 扩展一些文件的系统,但在某些情况下我遇到了扩展问题。定义/宏命名的约定(如果可能的话我不想改变)是__<name>__
(即双前导和尾随下划线。)因此,这可以正确扩展:
define(`__ROOT__', `/home/mydir')
...
__ROOT__/bin
gives
/home/mydir/bin
but,
define(`__PREFIX__', `App_Mnemonic')
...
__PREFIX___some_service
应该给出:
App_Mnemonic_some_service
但给出
__PREFIX___some_service
(即它错过了扩展)
我认为宏的尾随下划线和底层文本的有效下划线之间缺少空格会令人困惑 m4。我能做些什么吗?例如,我可以用无声大括号来分隔宏吗,例如环境变量?
看似简单,实际上,我所要做的就是在底层文本中更改以下内容:
__PREFIX___some_service
为了这:
__PREFIX__()_some_service
也许看起来有点笨拙,但它毕竟是一个宏,不需要更改宏定义。所以这可以保持原样:
define(`__PREFIX__', `App_Mnemonic')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)