2

我正在开发一个使用 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 感到困惑。对此我能做些什么吗?我可以用无声大括号分隔宏吗,例如环境变量?

4

1 回答 1

1

看起来很简单,我在底层文本中所要做的就是改变这个:

__PREFIX___some_service

为了这:

__PREFIX__()_some_service

也许看起来有点笨拙,但毕竟是一个宏,不需要更改宏定义。所以这可以保持原样:

define(`__PREFIX__', `App_Mnemonic')
于 2011-07-25T11:59:23.480 回答