C-未定义对<function name =“”>的引用

时间:2017-03-24 15:57:49

标签: c

我是C编程的新手,我试着用几个小时修复“未定义的引用”错误。

我需要对Battleship游戏进行编码,现在我只是试图在屏幕上打印游戏地图,我的代码可能不会让你感觉到,但我只是在开始时尝试修复此错误。

我的代码

#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");
}

}

当它试图运行该函数时发生错误 - &gt; “printmap(地图)” 然后我得到“未定义的引用”printmap(map)“”错误。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您没有正确关闭功能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

答案 1 :(得分:-3)

map[i][z]未初始化printmap(char map[8][8])而是发送参考。