typedef enum Colors{black, white};
void chess(int rows, int cols, Colors array[rows][cols]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (i+j % 2 == 0) {
array[i][j] = black;
} else {
array[i][j] = white;
}
}
}
}
我收到错误error: expected declaration specifiers or ‘...’ before ‘Colors’
我已确定我已正确声明枚举类型,因此我不确定这里的问题是什么。
答案 0 :(得分:5)
枚举通常定义为enum Colors { black, white };
,必须通过名称enum Colors
引用(前面的enum
是必需的)。例如:
enum Colors { black, white };
void print_color(enum Colors color) {
if(color == black) {
printf("Black\n");
} else if(color == white) {
printf("White\n");
}
}
现在,“typedef”语法为typedef enum { black, white } Colors;
,现在我们只需使用名称Colors
(前面没有enum
)来引用它:
typedef enum { black, white } Colors;
void print_color(Colors color) {
if(color == black) {
printf("Black\n");
} else if(color == white) {
printf("White\n");
}
}
这种奇怪的语法是因为enum { black, white }
实际上是一个无名的枚举,typedef
关键字为这个无名的类型赋予了名称。
答案 1 :(得分:0)
尝试按如下方式声明枚举:
typedef enum Colors
{
black,
white
} my_colors;
并在函数中使用my_colors
。我认为这可能会有所帮助