以问号开头的标识符的 MASM 命名约定?
MASM naming convention for identifiers beginning with a question mark?
查看BNF grammar for MASM,一个标识符可以这样命名:
The first character of the identifier can be an upper or lower-case
alphabetic character ([A–Za-z]) or any of these four characters: @ _ $
? The remaining characters can be any of those same characters or a
decimal digit ([0–9]). Maximum length is 247 characters.
是否有任何 MASM(或程序集)命名约定以 ?
(问号)开头的标识符?
我不知道有任何关于前导 ?s 的记录约定。但是 MASM 在扩展包含 LOCAL
标签的宏时似乎使用了两个前导问号。
这没有明确记录为约定 AFAIK,但 MASM 程序员指南在名为 "Defining Local Symbols in Macros".[=15 的部分中顺便提到了它=]
我们也可以自己写一段简单的代码来测试一下:
.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 将其用于一些预定义的特殊符号。
查看BNF grammar for MASM,一个标识符可以这样命名:
The first character of the identifier can be an upper or lower-case alphabetic character ([A–Za-z]) or any of these four characters: @ _ $ ? The remaining characters can be any of those same characters or a decimal digit ([0–9]). Maximum length is 247 characters.
是否有任何 MASM(或程序集)命名约定以 ?
(问号)开头的标识符?
我不知道有任何关于前导 ?s 的记录约定。但是 MASM 在扩展包含 LOCAL
标签的宏时似乎使用了两个前导问号。
这没有明确记录为约定 AFAIK,但 MASM 程序员指南在名为 "Defining Local Symbols in Macros".[=15 的部分中顺便提到了它=]
我们也可以自己写一段简单的代码来测试一下:
.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 将其用于一些预定义的特殊符号。