首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在m4宏定义的名称中转义$?

如何在m4宏定义的名称中转义$?
EN

Stack Overflow用户
提问于 2018-05-01 16:11:56
回答 1查看 605关注 0票数 1

我尝试了以下代码

代码语言:javascript
复制
define(`$TITLE', `my title')
This is my $TITLE.

但是,当我用m4调用它时,文本保持不变。

这似乎是$问题。我应该逃避吗?

编辑:

我发现

代码语言:javascript
复制
define(`$TITLE', `my title')
This is my indir(`$TITLE')

工作,但有更好的方法去做吗?

而且,这样的宏名是转介作为非标准的,在哪里可以找到这样的名称的列表?

GNU M4 1.4.18手册,5.1节,定义宏 作为一个GNU扩展,要定义的第一个参数不一定是一个简单的单词。它可以是任何文本字符串,甚至是空字符串。不能以正常方式调用具有非标准名称的宏,因为名称无法识别。它只能由builtins (参见Indir)和defn (参见Defn)引用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-01 18:10:27

这里是标准。它写道:

宏名称应由字母、数字和下划线组成,其中第一个字符不是数字。不属于此形式的令牌不应视为宏。

我认为使用defn会更好(而不是indir),因为POSIX标准不包含indir (defn是的),defn必须在其他的m4-implementation (不仅仅是GNU)上工作。

我认为,如果变量以下划线(而不是美元符号):_TITLE开头,在您的情况下会更好。它是有效的宏名,可能不会出现在文本中:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50119947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档