在全球范围内宣布枚举

ant*_*009 6 c

gcc 4.4.4 c89

我在state.c文件中有以下内容:

enum State {
    IDLE_ST,
    START_ST,
    RUNNING_ST,
    STOPPED_ST,
};

State g_current_state = State.IDLE_ST;
Run Code Online (Sandbox Code Playgroud)

我尝试编译时遇到以下错误.

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_current_state’
Run Code Online (Sandbox Code Playgroud)

是否有一些在全局范围内声明了枚举类型的变量?

非常感谢任何建议,

pax*_*blo 19

有两种方法可以直接使用C.在任何地方使用全enum名:

enum State {
    IDLE_ST,
    START_ST,
    RUNNING_ST,
    STOPPED_ST,
};
enum State g_current_state = IDLE_ST;
Run Code Online (Sandbox Code Playgroud)

或者(这是我的偏好)typedef它:

typedef enum {
    IDLE_ST,
    START_ST,
    RUNNING_ST,
    STOPPED_ST,
} State;
State g_current_state = IDLE_ST;
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个,因为它使类型看起来像第一类int.