Gcc 什么是说明符限定符列表?

Gcc 什么是说明符限定符列表?,gcc,compiler-errors,Gcc,Compiler Errors,GCC喜欢告诉我在错误消息中缺少一个说明符限定符列表 我知道这意味着我没有放进正确类型的东西 但说明符限定符列表究竟是什么 编辑: 导致此问题的示例C代码: #include <stdio.h> int main(int argc, char **argv) { struct { undefined_type *foo; } bar; printf("Hello, world!"); } 这是一个说明符和限定符的列表:-)说明符是像void、char、struct

GCC喜欢告诉我在错误消息中缺少一个说明符限定符列表

我知道这意味着我没有放进正确类型的东西

但说明符限定符列表究竟是什么

编辑:

导致此问题的示例C代码:

#include <stdio.h>

int main(int argc, char **argv) {
    struct { undefined_type *foo; } bar;
    printf("Hello, world!");
}

这是一个说明符和限定符的列表:-)说明符是像
void
char
struct Foo
等,限定符是像
const
volatile
这样的关键字。有关定义,请参见

在您的例子中,
undefined_type
尚未定义,因此解析器将其视为标识符,而不是预期的说明符限定符列表。如果要
typedef。。。未定义的_型
出现之前,则
未定义的_type
将成为说明符


如果您考虑使用上下文无关语法解析C,那么编译器处理typedef等的方式可能会很麻烦。如果我理解正确的话,它通过潜入符号表操作来游戏解析器生成器,这样它就可以使用上下文来解析源代码。

也许您可以展示一个生成错误的代码行的示例?对于我们这些已经学会不犯任何错误的人来说,很难猜到您犯了什么错误-请举例说明会有很大帮助的。
Lappy:code chpwn$ gcc test.c
test.c: In function ‘main’:
test.c:4: error: expected specifier-qualifier-list before ‘undefined_type’