3

私はm4に非常に慣れていませんが、この単純なことを見つけることができません:

単語の途中でマクロを展開することはできますか? (低レベル コードの C シンボル名で使用されるカウンターに使用します)

私は次のように意味します:

define(`foo',`bar')
Happy fooday!

予想される出力は次のようになります。

Happy barday!

次のようにしても問題ありません。

Happy expand(foo)day!

これが非常に簡単な質問である場合は申し訳ありませんが、私のグーグルの試みは「単語のm4展開マクロ、m4展開部分文字列」などで失敗しました...

ありがとう

編集1:

StackOverflow はこれを推奨しました: Expansion of macro not working in M4 ...これはまさに私が探していたものです。

編集2:

わかりました、それはそれほど簡単ではありません:

define(`foo',`bar')
Happy asdfoo()day!

これは失敗しますが、これは正常な場合があります。ただし、私の C シンボル名では、これらのマクロを単語の途中で置き換える必要があります。そのためにはどのような方法がありますか?

4

1 に答える 1

3

私はあなたが探していると信じています:

define(`foo',`bar')
Happy `'foo`'day!

つまり、単語境界を示すために m4 引用符を使用します。または、より正確には、展開したい単語の両側に空の文字列を使用し、その空の文字列の境界を引用符で示します。

于 2013-02-28T23:52:57.587 に答える