gcc - 什么是说明符限定符列表?

标签 gcc compiler-errors

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’

最佳答案

这是一个说明符和限定符的列表:-) 说明符类似于 void , char , struct Foo等,限定符是关键字,如 constvolatile .见 this C grammar对于定义。

在您的情况下,undefined_type尚未定义,因此解析器将其视为标识符,而不是预期的说明符限定符列表。如果您要 typedef ... undefined_type;在它发生之前,然后 undefined_type将成为说明符。

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

关于gcc - 什么是说明符限定符列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2894639/

相关文章:

javascript - 在 Visual Studio 中查找大型 javascript 文件中的语法错误

c - 这个C程序有什么错误?

c - Gcc 不给出关于文件末尾换行符的警告

c - 构建 C 源代码时出现的幽灵错误

c++ - 为什么我会从 'int'到 'int*'的无效转换错误以及其他错误?

c# - MVC : An unhandled exception of type 'System.StackOverflowException' occurred in System.Core.dll

c++ - 对应于 C++ 中的 main 函数的编译时错误

c++ - 如何更新到 C++11?

c++ - .h 和 .cc 文件的模板链接和分离

c++ - 如何摆脱内部编译器错误 : Illegal instruction min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MIN__; }