我尝试了以下代码
define(`$TITLE', `my title')
This is my $TITLE.但是,当我用m4调用它时,文本保持不变。
这似乎是$问题。我应该逃避吗?
编辑:
我发现
define(`$TITLE', `my title')
This is my indir(`$TITLE')工作,但有更好的方法去做吗?
而且,这样的宏名是转介作为非标准的,在哪里可以找到这样的名称的列表?
GNU M4 1.4.18手册,5.1节,定义宏 作为一个GNU扩展,要定义的第一个参数不一定是一个简单的单词。它可以是任何文本字符串,甚至是空字符串。不能以正常方式调用具有非标准名称的宏,因为名称无法识别。它只能由builtins (参见Indir)和defn (参见Defn)引用。
发布于 2018-05-01 18:10:27
这里是标准。它写道:
宏名称应由字母、数字和下划线组成,其中第一个字符不是数字。不属于此形式的令牌不应视为宏。
我认为使用defn会更好(而不是indir),因为POSIX标准不包含indir (defn是的),defn必须在其他的m4-implementation (不仅仅是GNU)上工作。
我认为,如果变量以下划线(而不是美元符号):_TITLE开头,在您的情况下会更好。它是有效的宏名,可能不会出现在文本中:)
https://stackoverflow.com/questions/50119947
复制相似问题