gpt4 book ai didi

c - 尝试将一个结构体的字段复制到 c 中的另一个结构体?

转载 作者:行者123 更新时间:2023-11-30 17:52:29 25 4
gpt4 key购买 nike

所以我有 C 语言的四子棋游戏代码。我现在使用的结构是:

typedef struct {int value; board brd; } state ;
typedef char board[8][8] ;
#define BOARD(p_S) (((state *) (p_S)->brd)

我正在尝试编译 main 函数,但我在这一行不断收到错误:

BOARD(&currentstate) = BOARD(p_nextstate) ;

其中 currentstate 的类型是 state,p_nextstate 是指向状态的指针。我需要更改当前状态的板字段以匹配 p_nextstate 的板字段,但是当我编译时出现此错误:

error: incompatible types when assigning to type "board" from type "char(*)[8]"

完整的代码放在这里太长了,我想我已经包含了所有相关的行,但如果没有,我会添加它们。有没有正确的方法来改变这条线?任何帮助表示赞赏。编辑:缺少的括号是我的错误,它在代码中,但我在这里输入错误。现在已修复以匹配代码。这是完整的主要功能:

    int main( int argc, char * argv[]){

tree T ;
state currentstate, *p_nextstate ;
int depth ;

initialize_board(BOARD(&currentstate)) ;
do{
printf("Enter game tree depth: ") ;
scanf("%d", &depth) ;
}while(depth < 1) ;
print_board(BOARD(&currentstate)) ;

while(get_move(BOARD(&currentstate), PLAYER) != 0){
print_board(BOARD(&currentstate)) ;
if(have_winner(BOARD(&currentstate)) == TRUE){
printf("You win.\n") ;
exit(0) ;
}

printf("Calculating my move...\n") ;
init_tree(&T) ;
if(make_state_root(&T, currentstate, NULL, NULL) == ERROR){
printf("Memory Allocation error in move().\n") ;
exit(-1) ;
}

printf("Board is now:\n") ;
print_board(BOARD(p_nextstate)) ;
printf("Minimax value is %d\n", VALUE(p_nextstate)) ;
if(have_winner(BOARD(p_nextstate)) == TRUE){
printf("I win.\n") ;
exit(0) ;
} else if (VALUE(p_nextstate) == WIN){
printf("I concede.\n") ;
exit(0) ;
}
BOARD(&currentstate) = BOARD(p_nextstate) ;
destroy_tree(&T, free) ;
}

return 0 ;
}

最佳答案

宏基本上只是复制和粘贴替换。尝试替换它,看看得到什么代码。

((state *) (&currentstate)->brd) = ((state *) (p_nextstate)->brd);

编辑:没关系,你修复了宏

我认为问题可能是您在定义结构时没有定义 board 的定义,因此它认为您的 brd 成员应该是拥有一些名为 board 的其他类型。尝试交换两个 typedef 的顺序,看看是否有帮助。

关于c - 尝试将一个结构体的字段复制到 c 中的另一个结构体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136808/

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