gpt4 book ai didi

c - 在开关中分配结构不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:57 26 4
gpt4 key购买 nike

在我的程序中,我试图创建一个新的基于结构的 od switch 语句,但是当我这样做时,编译器返回一个错误:

位置赋值行的'{'标记前的语法错误

我使用 dev-c++ 4.9.9.2 作为 IDE(我认为它使用 MinGW 作为编译器)。 IT 是为了我兄弟的编程任务,我正在帮助他,我已经几年没见过 C,所以我生疏了(而且我之前也不是冠军)。

这里是简化的代码:

typedef enum{TOP_RIGHT = 0,TOP_LEFT,BOTTOM_RIGHT,BOTTOM_LEFT} diagonal_t;
typedef struct
{
int row;
int column;
} position_t;
...
void checkDiagonal(diagonal_t diagonal_to_check)
{
...
position_t position;
switch(diagonal_to_check)
{
case TOP_RIGHT:
position = {0,0}; //here's the error, but I don't know how to repair it.
//how to create a new struct here without disrupting the
//switch?
break;
case TOP_LEFT:
position = {0,0};
break;
....
}
}

最佳答案

var_of_type_struct = { init_value } 语法仅适用于定义;它在作业中不起作用。

三种常见的处理方式是

  1. 定义一个函数来初始化您的struct
  2. 定义一个函数,将字段设置为您传递的参数,以及
  3. 分配您的struct 的各个字段。

方法一:

void init_pos(position_t *p) {
p->row = 0;
p->column = 0;
}
...
case TOP_LEFT:
init_pos(&position);
break;

方法二:

void set_pos(position_t *p, int r, int c) {
p->row = r;
p->column = c;
}
...
case TOP_LEFT:
set_pos(&position, 0, 0);
break;

方法 3:

case TOP_LEFT:
position.row = 0;
position.column = 0;
break;

关于c - 在开关中分配结构不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com