2017-04-01 79 views
1

我遇到了Xcode的問題,它只出現在Xcode上。它不會出現在VisualStudio中,甚至不會在控制檯上編譯(在OS X上)。發生錯誤類似於「使用Xcode時'移動''的衝突類型」

以下錯誤:

  1. 衝突的類型爲 '移動'(4號線)

  2. 的功能隱式聲明 '搬家' 是C99(第20行)無效

  3. 函數調用的參數太多,預計爲2,有4個(第20行)

  4. 「移動」(第42行)的衝突類型

下面是代碼:

#include<stdio.h> 

void printField(int *field); 
void move(int *field, int *posX, int *posY, char zug); //line 4 

int main() { 

    int field[8][8] = { 0 }, posX=0, posY=0; 
    char zug; 

    // setzen der Spielfigur 
    field[posY][posX] = 1; 

    printf("\nBeenden mit x\n"); 

    do { 
     printField(&field[0][0]); 
     printf("\nZug [w hoch, a links, s runter, d rechts]: "); 
     scanf("%c", &zug); 
     move(&field[0][0], &posX, &posY, zug); //line 20 
    }while(zug != 'x'); 

    return 0; 
} 


// Ausgabe Spielfeld 
void printField(int *field) { 
    printf("\n"); 
    int i, j; 
    // Schleife fuer Zeilen, Y-Achse 
    for(i=0; i<8; i++) { 
     // Schleife fuer Spalten, X-Achse 
     for(j=0; j<8; j++) { 
      printf("%d ", *(field+i*8+j)); 
     } 
     printf("\n"); 
    } 
} 

// Spielfigur bewegen 
void move(int *field, int *posX, int *posY, char zug) { //line 42 
    // alte Position loeschen 
    *(field + *posY * 8 + *posX) = 0; 

    // neue Position bestimmen 
    switch(zug) { 
     case 'w': (*posY)--; break; 
     case 'a': (*posX)--; break; 
     case 's': (*posY)++; break; 
     case 'd': (*posX)++; break; 
    } 

    // Grenzueberschreitung pruefen 
    if(*posX < 0) *posX = 7; 
    if(*posX > 7) *posX = 0; 
    if(*posY < 0) *posY = 7; 
    if(*posY > 7) *posY = 0; 

    // neue Position setzen 
    *(field + *posY * 8 + *posX) = 1; 
} 
+0

編譯器肯定會告訴你帶有錯誤信息的行號,對不對? – alk

+0

4號線:衝突的類型爲「移動」 第20行:功能「移動」隱式聲明是無效的C99 第20行:太多的參數函數調用,預計2,有4 42號線:衝突的類型爲'移動' – Eduard

+0

謝謝!現在你可以肯定地註釋代碼來告訴我們哪些行是4,20和42? – alk

回答

1
Conflicting types for 'move' (Line 4) 
... 
Too many arguments to function call, expected 2, have 4 (Line 20) 

對我來說這看起來好像使用的<stdio.h>拉在一個名爲move()功能的現有聲明(指定2,但4個參數)。

嘗試將您的功能move()重命名爲my_move()之類的東西。

+0

謝謝!這解決了。 – Eduard

+0

@alk漂亮的漁夫! +1。 OP的'stdio.h'的'move'函數做什麼? –

+0

@CoolGuy:我沒有線索...... – alk