繁体   English   中英

C 中的语法错误

[英]Syntax error in C

 5 enum state {ST_BEFORE_KEY, ST_IN_KEY, ST_BEFORE_VALUE, ST_TERM, ST_ERR};
  6 
  7 typedef struct {
  8   state st;
      ...

上面的代码报告:

error: expected specifier-qualifier-list before ‘state’

使用枚举类型有什么问题?

使用enum state或包括typedef enum state state

枚举标签在 C 中的命名空间与标识符(变量、函数或类型定义)不同。

尝试

enum state {ST_BEFORE_KEY, ST_IN_KEY, ST_BEFORE_VALUE, ST_TERM, ST_ERR};

typedef struct {
    enum state st;
    ...
};

勉强链接到这个常见问题条目 这是关于命名空间的讨论。

有四种不同类型的命名空间,用于:

  • 标签(即转到目标);
  • 标签(结构、联合和枚举的名称;这三个不是分开的,即使它们理论上可以分开);
  • 结构/联合成员(每个结构或联合一个命名空间);
  • 其他一切(函数、变量、 typedef 名称、枚举常量),被标准称为“普通标识符”。

编辑

由于OP要求举个例子..

struct foo {
    int bar;
    int foo;
};

struct bar {
    int foo;
    struct foo bar;
};

如果你用c++就可以了;

在 c(不是 c++)上,你应该这样写。

5 enum state {ST_BEFORE_KEY, ST_IN_KEY, ST_BEFORE_VALUE, ST_TERM, ST_ERR};
6 
7 typedef struct {
8   enum state st;

你需要

typedef struct {
    enum state st;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM