3

我对 m4 很陌生,但找不到这个简单的东西:

是否可以在单词中间扩展宏?(我会将它用于在低级代码中的 C 符号名称中使用的计数器)

我的意思是:

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

预期的输出将是:

Happy barday!

甚至可以这样做:

Happy expand(foo)day!

抱歉,如果这是一个非常简单的问题,但我在“m4 扩展 word 中的宏、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 回答