错误,如;'的冲突类型;移动'&引用;使用Xcode时
我在Xcode上遇到了一个问题,它只出现在Xcode上。它不会出现在VisualStudio中,甚至在通过控制台(在OS X上)编译时也不会出现 出现以下错误:错误,如;'的冲突类型;移动'&引用;使用Xcode时,c,xcode,macos,declaration,C,Xcode,Macos,Declaration,我在Xcode上遇到了一个问题,它只出现在Xcode上。它不会出现在VisualStudio中,甚至在通过控制台(在OS X上)编译时也不会出现 出现以下错误: “移动”的冲突类型(第4行) 函数“move”的隐式声明在C99中无效(第20行) 函数调用的参数太多,预期为2,实际为4(第20行) “移动”的冲突类型(第42行) 代码如下: #include<stdio.h> void printField(int *field); void move(int *field, int
#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;
}
#包括
无效打印字段(整数*字段);
无效移动(int*field,int*posX,int*posY,char-zug)//第4行
int main(){
int字段[8][8]={0},posX=0,posY=0;
查祖格;
//斯皮尔菲格酒店
字段[posY][posX]=1;
printf(“\nBenden mit x\n”);
做{
打印字段(&字段[0][0]);
printf(“\nZug[w hoch,a links,s runter,d rechts]:”;
scanf(“%c”和&zug);
移动(&field[0][0],&posX,&posY,zug);//第20行
}而(zug!=“x”);
返回0;
}
//斯皮尔菲尔德酒店
无效打印字段(整型*字段){
printf(“\n”);
int i,j;
//施莱夫·弗尔·泽伦,Y-Achse
对于(i=0;i7)*posY=0;
//新位置设置
*(字段+*posY*8+*posX)=1;
}
在我看来,这似乎是在使用中的
拉入一个名为move()
的函数的现有声明(指定2个但不指定4个参数)
尝试将您的函数重命名为类似于my_move()编译器肯定会用错误消息告诉您行号,对吗?第4行:“move”的冲突类型第20行:函数“move”的隐式声明在C99第20行中无效:函数调用的参数太多,预期为2,有4行42:冲突类型的“移动”谢谢!现在,您肯定会对代码进行注释,告诉我们哪些行是4、20和42?@Eduard您确定您正在编译和运行所显示的代码吗?我看不出您的代码有任何问题。无论如何,在我看来,这似乎是使用中的
引入了一个名为move()
的函数的现有声明(指定了2个但4个参数)。尝试将您的move()
重命名为类似my\u move()
@alk Nice Catch+1.OP的stdio.h
的move
功能做什么?
Conflicting types for 'move' (Line 4)
...
Too many arguments to function call, expected 2, have 4 (Line 20)