编译器错误:“expected specifier-qualifier-list”

时间:2011-08-04 09:28:04

标签: c++

int main()
{
    typedef struct a
    {
        static int w;
        char *p;
    } a;
}

编译时会给 error:expected specifier-qualifier-list before 'static' 你可以告诉我这个错误意味着什么,以及如何删除它?

2 个答案:

答案 0 :(得分:5)

本地类在C ++中不能包含静态数据成员。

引用标准(第9.8.4段)

  

本地类不应有静态数据成员。

在不太可能的情况下,您不知道,本地类是在函数范围内定义的类,结构或联合。

9.8.1

  

可以在函数定义中定义类;这样的课是   称为本地班。

答案 1 :(得分:-1)

static是一个存储类,因此无法正确应用于typedef。它与registerconst的行相同。

即使static有效,w如何保持静态且p不是静态的?

这会有效:

int main()
{
    typedef struct a
    {
        int w;
        char *p;
    } a;
    static a a0;
}