【问题标题】:What is a specifier-qualifier-list?什么是说明符限定符列表?
【发布时间】:2010-05-24 03:48:06
【问题描述】:

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

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

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

编辑:

导致此问题的示例 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’

【问题讨论】:

  • 或许您可以展示一个生成错误的代码行示例?
  • 对于我们这些已经学会不犯任何错误的人来说,很难猜出你正在犯了什么错误 - 所以插图会有很大帮助.

标签: gcc compiler-errors


【解决方案1】:

这是说明符和限定符的列表 :-) 说明符是 voidcharstruct Foo 等,而限定符是 constvolatile 等关键字。定义见this C grammar

在您的情况下,undefined_type 尚未定义,因此解析器将其视为标识符,而不是预期的说明符限定符列表。如果你在它出现之前是typedef ... undefined_type;,那么undefined_type 将成为一个说明符。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多