C-对
我是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)
#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一样,您也必须发布带有不正确缩进的代码作为答案。。。