我已经声明了一个带有枚举类型的结构。由于它是 .h 中的成员和 .c 文件中的枚举,因此我在代码中使用枚举。
这样做是合法的,还是会导致编译问题?
// in test.h
typedef struct {
eState state;
} TEST;
// in test.c
#include "test.h"
typedef enum {
DEFAULT,
FAST
} eState;
您有三个选择:
-
将枚举声明移动到
.h
文件(它必须在结构声明之前(。 -
或者绝对荒谬和愚蠢(您必须在包含
.h
文件的每个文件中以相同的方式声明枚举(,但从语言的角度来看是合法的// in test.c typedef enum { DEFAULT, FAST } eState; #include "test.h"
-
还可以将结构声明移动到
.c
文件中。