Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误,如;'的冲突类型;移动'&引用;使用Xcode时_C_Xcode_Macos_Declaration - Fatal编程技术网

错误,如;'的冲突类型;移动'&引用;使用Xcode时

错误,如;'的冲突类型;移动'&引用;使用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

我在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 *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)