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

  • 本文关键字:转义 m4 宏定义 m4
  • 更新时间 :
  • 英文 :


我尝试了以下代码

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扩展,要定义的第一个参数不必是一个简单的词。它可以是任何文本字符串,甚至是空字符串。无法以正常方式调用具有非标准名称的宏,因为无法识别该名称。它只能由内置的 indir(参见 Indir(和 defn(参见 Defn(引用。

这是标准。它写道:

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

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

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

相关内容

  • 没有找到相关文章

最新更新