2013-04-21 72 views
0

所以,我對於C中的連接四個遊戲的代碼,我現在使用的結構是:試圖將一個結構的字段複製到c中的另一個結構中?

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

而且我試圖編譯的主要功能,但我在這條線不斷得到一個錯誤:

BOARD(&currentstate) = BOARD(p_nextstate) ; 

其中currentstate的類型是狀態,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 ; 
    } 
+0

嘗試切換兩個typedefs的順序,看看是否有幫助。 – Antimony 2013-04-21 22:42:59

回答

0

宏基本上只是複製和粘貼替代。嘗試替換它,看看你得到了什麼代碼。

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

編輯:沒關係,你定宏

我認爲這個問題可能是你的board定義在您定義你的結構點沒有定義,所以它認爲你的brd成員應該有一些其他類型board。嘗試切換兩個typedef的順序,看看是否有幫助。

+0

我已經切換了typedefs,但我仍然收到相同的錯誤。在那一行p_nextstate和&currentstate應該是相同的類型,我不知道爲什麼p_nextstate被讀爲char * [8] – user2305426 2013-04-22 02:22:45

+0

這很奇怪。你能發佈一個展示問題的最小代碼示例嗎? – Antimony 2013-04-22 02:36:58

+0

這確實是錯誤發生的唯一線路,但如果可以有任何用處,我會發布整個主要功能。 – user2305426 2013-04-22 11:00:30

相關問題