[英]Trying to copy a field of one struct to another struct in c?
因此,我在C中有一个Connect Four游戏的代码。我现在使用的结构是:
typedef struct {int value; board brd; } state ;
typedef char board[8][8] ;
#define BOARD(p_S) (((state *) (p_S)->brd)
而且我正在尝试编译main函数,但在此行上不断出现错误:
BOARD(¤tstate) = 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(¤tstate)) ;
do{
printf("Enter game tree depth: ") ;
scanf("%d", &depth) ;
}while(depth < 1) ;
print_board(BOARD(¤tstate)) ;
while(get_move(BOARD(¤tstate), PLAYER) != 0){
print_board(BOARD(¤tstate)) ;
if(have_winner(BOARD(¤tstate)) == 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(¤tstate) = BOARD(p_nextstate) ;
destroy_tree(&T, free) ;
}
return 0 ;
}
宏基本上只是复制和粘贴替换。 尝试替换它,看看得到什么代码。
((state *) (¤tstate)->brd) = ((state *) (p_nextstate)->brd);
编辑:没关系,您修复了宏
我认为问题可能是您在定义结构时未定义board
定义,因此它认为您的brd
成员应该具有其他一些名为board
类型。 尝试切换两个typedef的顺序,看看是否有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.