我正在开发一个使用 M4 扩展一些文件的系统,但在某些情况下我遇到了扩展问题。定义/宏命名的约定(如果可能的话,我宁愿不改变)是__<name>__
(即双前导和尾随下划线。)所以这可以正确扩展:
define(`__ROOT__', `/home/mydir')
...
__ROOT__/bin
给
/home/mydir/bin
但,
define(`__PREFIX__', `App_Mnemonic')
...
__PREFIX___some_service
应该给:
App_Mnemonic_some_service
但给
__PREFIX___some_service
(即它错过了扩展)
我认为宏的尾随下划线和底层文本的有效下划线之间缺少空格使 m4 感到困惑。对此我能做些什么吗?我可以用无声大括号分隔宏吗,例如环境变量?