定义 NMAKE 宏

NMAKE 宏使用以下语法定义:

macro_name=string

macro_name 是字母、数字和下划线 (_) 的区分大小写的组合,长度至多 1024 个字符。 macro_name 可以包含一个调用的宏。 如果 macro_name 只由一个调用的宏组成,则调用的宏不能为 null 或未定义。

string 可以是零个或多个字符的任意序列。 null 字符串包含零个字符或仅包含空格或制表符。 string 可以包含一个宏调用。

宏内的特殊字符

定义后面的数字符号 (#) 指定注释。 若要在宏中指定文本数字符号,请使用插入号 (^) 对其进行转义,如 ^# 中所示。

美元符号 ($) 指定宏调用。 若要指定文本 $,请使用 $$

若要将定义扩展到新行,请使用反斜杠 (\) 结束该行。 调用宏时,反斜杠和后跟的换行符将替换为空格。 若要在行末尾指定文本反斜杠,请在它前面加上插入号 (^) 转义符,或在它后面加上注释说明符 (#)。

若要指定文本换行符,请在行末尾使用插入号 (^) 转义符,如以下示例所示:

CMDS = cls^
dir

null 宏和未定义的宏

null 宏和未定义的宏都会扩展为 null 字符串,但定义为 null 字符串的宏会被视为是在预处理表达式中定义的。 若要将宏定义为 null 字符串,请在命令行或命令文件中的等于号 (=) 后仅指定空格或制表符,并将 null 字符串或定义括在双引号 (" ") 中。 若要取消定义宏,请使用 !UNDEF。 有关详细信息,请参阅生成文件预处理指令

定义宏的位置

在命令行、命令文件、生成文件或 Tools.ini 文件中定义宏。

在生成文件或 Tools.ini 文件中,每个宏定义必须出现在单独的行上,且不能以空格或制表符开头。将忽略等于号周围的空格或制表符。 所有 string 字符都是文本字符,包括周围的引号和嵌入空格。

在命令行或命令文件中,空格和制表符分隔参数,不能环绕等于号。 如果 string 已嵌入空格或制表符,请将字符串本身或整个宏括在双引号 (" ") 中。

宏定义中的优先级

如果宏具有多个定义,NMAKE 使用优先级最高的定义。 以下列表显示了从高到低的优先级顺序:

  1. 在命令行上定义的宏

  2. 在生成文件或包含文件中定义的宏

  3. 继承的环境变量宏

  4. Tools.ini 文件中定义的宏

  5. 预定义宏,例如 CCAS

使用 /E 选项会导致从环境变量继承的宏替代具有相同名称的生成文件宏。 使用 !UNDEF 替代命令行。

另请参阅

宏和 NMAKE