您好我的功能有误 - 说它未定义,我无法理解编译器的真正需求。不,我不能使用数组,而且我在制作全局变量方面遇到了麻烦,因此必须以这种方式完成。运行此命令时会产生以下错误消息:
错误4错误C2371:' moveHandler' :重新定义;不同的基本类型c:\ users \ owner \ documents \ visual studio 2012 \ projects \ project36 \ project36 \ source.c 120 1 Project36
功能定义:
void moveHandler( char source, char destination, char *pa, char *pb, char *pc, char *pd, char *pe, char *pf,
char *pg, char *ph, char *pi, char *pj, char *pk, char *pl, char *pm, char *pn, char *po ) {
char temp;
if ( source == 'D' && destination == 'A' ) {
temp = *pa;
*pa = *pd;
*pd = temp;
}
return;
}
函数调用:
moveHandler( sourcePiece, destination, &pa, &pb, &pc, &pd, &pe, &pf, &pg, &ph, &pi, &pj, &pk, &pl, &pm, &pn, &po);
答案 0 :(得分:4)
您正在C代码中调用未声明的函数。确保在尝试调用它们之前声明C函数(带原型)。
在提出问题之前尝试搜索SO是有道理的。搜索“重新定义;不同的基本类型”会立即为您提供各种各样的答案。
答案 1 :(得分:0)
如果你调用编译器无法找到或不知道的函数,它会假定它只是从其他地方链接到的(比如,链接器将处理的其他一些库) ),并返回int
。
如果稍后在之后定义函数,编译器已经看到它被调用(但未在代码中定义或声明),编译器将抛出重定义错误,因为它已经确定函数必须在外部存在并返回int
。
要解决此问题,请在定义任何函数之前声明所有函数:
为:
#include <stdio.h>
int main()
{
printf("%d\n", add2(5, 6));
return 0;
}
int add2(int a, int b)
{
return a + b;
}
好:
#include <stdio.h>
int add2(int a, int b);
int main()
{
printf("%d\n", add2(5, 6));
}
int add2(int a, int b)
{
return a + b;
}