2

M4 を使用して一部のファイルを展開するシステムに取り組んでいますが、場合によっては展開で問題が発生します。定義/マクロの命名規則 (可能であれば変更したくない) は__<name>__(つまり、先頭と末尾のアンダースコアが 2 つある) ため、これは正しく展開されます。

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 に答える