我遇到了Xcode的問題,它只出現在Xcode上。它不會出現在VisualStudio中,甚至不會在控制檯上編譯(在OS X上)。發生錯誤類似於「使用Xcode時'移動''的衝突類型」
以下錯誤:
衝突的類型爲 '移動'(4號線)
的功能隱式聲明 '搬家' 是C99(第20行)無效
函數調用的參數太多,預計爲2,有4個(第20行)
「移動」(第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;
}
編譯器肯定會告訴你帶有錯誤信息的行號,對不對? – alk
4號線:衝突的類型爲「移動」 第20行:功能「移動」隱式聲明是無效的C99 第20行:太多的參數函數調用,預計2,有4 42號線:衝突的類型爲'移動' – Eduard
謝謝!現在你可以肯定地註釋代碼來告訴我們哪些行是4,20和42? – alk