m4扩展内部宏

时间:2013-02-13 18:06:35

标签: macros expansion m4

我对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符号名称中,我必须在单词的中间替换这些宏。怎么办呢?

1 个答案:

答案 0 :(得分:2)

我相信你在寻找:

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

也就是说,使用m4引号来表示单词边界。或者,更准确地说,在您希望展开的单词的任一侧使用空字符串,并用引号指示该空字符串的边界。