C-对

C-对,c,C,我是C编程新手,我花了几个小时试图修复错误的未定义引用 我需要对战舰游戏进行编码,现在我只想在屏幕上打印游戏地图,我的代码可能对你没有意义,但我只是在开始,并试图修复这个错误 我的代码 #include <stdio.h> /*functions declaration*/ void mapmaker(char map[8][8]); void printmap(char map[8][8]); int main() { char map[8][8]; mapmaker(map)

我是C编程新手,我花了几个小时试图修复错误的未定义引用

我需要对战舰游戏进行编码,现在我只想在屏幕上打印游戏地图,我的代码可能对你没有意义,但我只是在开始,并试图修复这个错误

我的代码

#include <stdio.h>
/*functions declaration*/
void mapmaker(char map[8][8]);
void printmap(char map[8][8]);

int main()
{
char map[8][8];

mapmaker(map);
printmap(map);

}



void mapmaker(char map[8][8])
{
int i,z;
/*creating map*/
for(i=0;i<8;i++){
    for(z=0;z<8;z++)
    {
        map[i][z]='~';
    }

}



void printmap(char map[8][8])
{
    int num[8]={0,1,2,3,4,5,6,7};
    int i,z;

    for(i=0;i<8;i++)
        printf("%d",num[i]);

    printf("\n--------------------------------\n");

    for(i=0;i<8;i++)
        printf("%d|",num[i]);
        for(z=0;z<8;z++)
            printf("%c ",map[i][z]);
        printf("\n");
}

}
尝试运行函数->printmapmap时出错 然后我得到未定义的PrintMap错误引用


非常感谢

您的映射[i][z]未在printmapchar映射[8][8]中初始化,请改为发送引用。

您没有正确关闭函数printmap的括号,在最后加了一个括号。此外,在mapmaker中,您没有放置mapmaker函数的结束括号。 这会解决你的问题

#include <stdio.h>
/*functions declaration*/
void mapmaker(char map[8][8]);
void printmap(char map[8][8]);

int main()
{
char map[8][8];

mapmaker(map);
printmap(map);
return 0;
}
void mapmaker(char map[8][8])
{
int i,z;
/*creating map*/
for(i=0;i<8;i++){
    for(z=0;z<8;z++)
    {
        map[i][z]='~';
    }
  }
} //this was missing
void printmap(char map[8][8])
{
    int num[8]={0,1,2,3,4,5,6,7};
    int i,z;

    for(i=0;i<8;i++)
        printf("%d",num[i]);

    printf("\n--------------------------------\n");

    for(i=0;i<8;i++)
        printf("%d|",num[i]);
        for(z=0;z<8;z++)
            printf("%c ",map[i][z]); //in for loop
        printf("\n"); //not in for loop
} 

// } //this was extra

在mapmaker中,您忘记了右括号。之后的所有内容仍然是函数体的一部分,编译器应该对你大喊大叫。右括号在错误的位置。如果您使用GCC,则有一个名为嵌套函数的扩展,该扩展允许代码进行编译,但作用域嵌套函数不允许在容器函数之外调用它。您必须学会调试。首先,将代码简化为一个最小的示例—例如,删除mapmaker函数及其调用,并删除printmap主体中的所有代码。然后再添加一些东西,直到你发现一个小的变化,导致问题。我不敢相信我花了这么多时间在这个愚蠢的事情上。。。非常感谢!这不会导致未定义的引用链接器错误。事实上,这根本不是问题。请随代码一起给出一点解释,说明问题是什么、在哪里,以及您如何解决错误。就像OP一样,您也必须发布带有不正确缩进的代码作为答案。。。