在C中定义枚举

faz*_*oso 1 c linux enums

我有点惊讶以下代码无法编译.你能说清楚吗?(头文件)

enum CarType_e {
    CAR_BMW = 0,
    CAR_KIA,
    CAR_HONDA,
    CAR_FORD,
    CAR_MERCEDES
};

int build_car(CarType_e type);
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

In file included from car.c:19:0:
car.h:35:16: error: unknown type name ‘CarType_e’
Run Code Online (Sandbox Code Playgroud)

这是gcc版本4.7.3

Ell*_*sch 6

你有两个选择,使用

typedef enum {
  CAR_BMW = 0,
  CAR_KIA,
  CAR_HONDA,
  CAR_FORD,
  CAR_MERCEDES
} CarType_e;
Run Code Online (Sandbox Code Playgroud)

或者,你可以使用 -

int build_car(enum CarType_e type);
Run Code Online (Sandbox Code Playgroud)

我用linux上的gcc测试了两个.