GCC喜欢告诉我,我在其错误消息中缺少了一个specifier-qualifier-list。

我知道这意味着我没有输入正确的类型。

但是,specifier-qualifier-list到底是什么?

编辑:

导致此情况的示例C代码:

#include <stdio.h>

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

从GCC给出以下错误:
Lappy:code chpwn$ gcc test.c
test.c: In function ‘main’:
test.c:4: error: expected specifier-qualifier-list before ‘undefined_type’

最佳答案

这是说明符和限定符的列表:-)限定符是诸如voidcharstruct Foo等之类的内容,而限定符则是诸如constvolatile之类的关键字。有关定义,请参见this C grammar

在您的情况下,尚未定义undefined_type,因此解析器将其视为标识符,而不是预期的specifier-qualifier-list。如果您要在typedef ... undefined_type;出现之前使用它,那么undefined_type将成为说明符。

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

关于gcc - 什么是specifier-qualifier-list?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2894639/

10-11 04:33