0

我一直在玩cdecl,我注意到有些名称不允许作为标识符,尽管 GCC 可以完美地编译它们。

例如,如果我写

整数点;

或者

整数指针;

或者

整数数组;

cdecl 给出“语法错误”,但是当我在程序中使用它时,GCC 编译它们没有任何问题。所以,有些标识符在 cdecl 中是不允许的。

哪些标识符不能在 cdecl 中使用,但可以在程序中使用(即程序编译)?为什么他们不被允许?

4

1 回答 1

1

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 中输入以下表达式也会失败:

将 ptr 声明为 int

但这有效:

将 ptr1 声明为 int

很明显,它也不喜欢ptr

于 2015-03-26T18:16:34.667 回答