看BNF grammar for MASM,标识符可以如下命名:
标识符的第一个字符可以是大写或小写字母字符([A–Za-z])或以下四个字符中的任何一个:@ _ $?其余字符可以是任何相同字符或十进制数字([0–9])。最大长度为247个字符。
是否存在任何以?
(问号)开头的标识符的MASM(或程序集)命名约定?
我不知道任何有关前导?的书面约定。但是,在扩展包含LOCAL
标签的宏时,MASM似乎使用了两个前导问号。
没有清楚地记录为约定AFAIK,但是《 MASM程序员指南》在名为“在宏中定义本地符号”]的一节中提到了这一点。 我们也可以通过编写简单的代码来自己测试:
.686 .model flat,stdcall option casemap:none FOO MACRO LOCAL local_to_foo local_to_foo: ENDM .code start: FOO FOO END start
如果我们告诉MASM为此生成列表文件(使用
/Fl
选项,则代码部分的列表将如下所示:00000000 .code 00000000 start: FOO 00000000 1 ??0000: FOO 00000000 1 ??0001: END start
最重要的是,对于程序员来说,最好不要在标识符中使用前导问号,就像《 MASM程序员指南》建议您不要使用前导
@
字符一样,因为MASM将其用于某些预定义的特殊符号。