Gcc 什么是说明符限定符列表?
GCC喜欢告诉我在错误消息中缺少一个说明符限定符列表 我知道这意味着我没有放进正确类型的东西 但说明符限定符列表究竟是什么 编辑: 导致此问题的示例C代码: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
#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’