定义 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 使用优先级最高的定义。 以下列表显示了从高到低的优先级顺序:
使用 /E
选项会导致从环境变量继承的宏替代具有相同名称的生成文件宏。 使用 !UNDEF
替代命令行。