本人是一个c初学者(大概10来天吧),偶然发现一种解决方法,大家出现这种错误可以尝试使用一下。因为代码本身是没有问题的,在vs2019上可以成功编译。导致错误的原因是更改了自己写的头文件强制定义变量的数值(#define ROW 3 #define COL 3)。改变数值后编译出现undefined reference to `InitBoard(char (*) [3], int, int)'错误。(还有一个类似的undefined reference to DisplayBoard函数错误)。解决方法是将错误的函数名更改一下,编译错误一遍后再改变量数值,然后再将函数名改回重新编译就成功了。但每次更改数值都要如此。
。。。不知道是什么原理,有大佬懂的话希望可以解答一下。
//以下是出现错误的函数及在头文件内强制定义的变量
#define ROW 3
#define COL 3
void InitBoard(char board[ROW][COL],int row,int col)
{
int i = 0;
int j = 0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
board[i][j] = ' ';
}
}
}
void DisplayBoard(char board[ROW][COL],int row,int col)
{
int i = 0;
int j = 0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf(" %c ",board[i][j]);
if(j<row-1)
printf("|");
}
printf("\n");
if(i<row-1)
{
for(j=0;j<col;j++)
{
printf("---");
if(j<col-1)
printf("|");
}
printf("\n");
}
}
}