除了不能在任何程序中使用的变量名外,cdecl 中不允许的变量名是什么?
What are the variable names that are disallowed in cdecl other than the ones that cannot be used in any program?
我一直在研究 cdecl,我注意到尽管 GCC 可以完美地编译它们,但有些名称不允许作为其中的标识符。
例如,如果我写
int ptr;
或
int pointer;
或
int array;
cdecl 给出了 "syntax error" 但是当我在程序中使用它时,GCC 编译它们没有任何问题。所以,有些标识符在cdecl中是不允许的。
哪些标识符不能在cdecl中使用,但可以在程序中使用(即程序编译)?为什么不允许?
pointer
和 array
在 cdecl 的保留关键字列表中:
char *keywords[] = {
"function",
"returning",
"array", // <--
"pointer", // <--
"reference",
"member",
"const",
"volatile",
"noalias",
"struct",
"union",
"enum",
"class",
"extern",
"static",
"auto",
"register",
"short",
"long",
"signed",
"unsigned",
"char",
"float",
"double",
"void",
NULL
};
至于ptr
,不知道为什么cdecl认为是无效的。在 cdecl 中输入以下表达式也失败:
declare ptr as int
但这行得通:
declare ptr1 as int
很明显它也不喜欢ptr
。
我一直在研究 cdecl,我注意到尽管 GCC 可以完美地编译它们,但有些名称不允许作为其中的标识符。
例如,如果我写
int ptr;
或
int pointer;
或
int array;
cdecl 给出了 "syntax error" 但是当我在程序中使用它时,GCC 编译它们没有任何问题。所以,有些标识符在cdecl中是不允许的。
哪些标识符不能在cdecl中使用,但可以在程序中使用(即程序编译)?为什么不允许?
pointer
和 array
在 cdecl 的保留关键字列表中:
char *keywords[] = {
"function",
"returning",
"array", // <--
"pointer", // <--
"reference",
"member",
"const",
"volatile",
"noalias",
"struct",
"union",
"enum",
"class",
"extern",
"static",
"auto",
"register",
"short",
"long",
"signed",
"unsigned",
"char",
"float",
"double",
"void",
NULL
};
至于ptr
,不知道为什么cdecl认为是无效的。在 cdecl 中输入以下表达式也失败:
declare ptr as int
但这行得通:
declare ptr1 as int
很明显它也不喜欢ptr
。