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’
使用枚举类型有什么问题?
答案 0 :(得分:9)
使用enum state
或包含typedef enum state state
。
枚举标记位于C中与标识符(变量,函数或typedef)不同的名称空间中。
答案 1 :(得分:6)
尝试
enum state {ST_BEFORE_KEY, ST_IN_KEY, ST_BEFORE_VALUE, ST_TERM, ST_ERR};
typedef struct {
enum state st;
...
};
与此FAQ entry边缘链接。这是关于namespaces的讨论。
有四种不同的命名空间:
修改强>
由于OP要求举例......
struct foo {
int bar;
int foo;
};
struct bar {
int foo;
struct foo bar;
};
答案 2 :(得分:2)
如果您使用c ++,则可以;
on c(not 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;
答案 3 :(得分:1)
你需要
typedef struct {
enum state st;