我写了一段程序:
#include<stdio.h>
#include<stdlib.h>
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int mul(int a, int b)
{
return a * b;
}
int div(int a, int b)
{
return a / b;
}
int main()
{
int x, y;
int input = 1;
int ret = 0;
int (*p[5])(int x, int y) = { 0,add,sub,mul,div };
do
{
printf("****************\n");
printf("1、add 2、sub\n");
printf("3、mul 4、div\n");
printf(" 0、exit \n");
printf("****************\n");
printf("请选择:");
scanf("%d", &input);
if ((input <= 4 && input >= 1))
{
printf("输入操作数:");
scanf("%d %d", &x, &y);
ret = (*p[input])(x, y);
printf("ret=%d\n", ret);
}
else if (input == 0)
{
printf("退出计算器\n");
}
else
{
printf("输入有误\n");
}
} while (input);
return 0;
}
最开始我是运行成功的,但是后面运行的时候显示:error C2371: “div”: 重定义;不同的基类型
我在网上找了解决方法就是说,我没有在使用“div”之前定义,或者新建.h文件,重新定义“div”。
都没有解决问题,然后我将
/*int div(int a, int b)
{
return a / b;
}*/
这一段div的定义给注释掉了,然后就能运行成功,然后我就猜测是不是div在某个地方已经被定义了,然后我又重新定义了一次,按照这个思路,我将其他三个:add、sub、mul的定义都注释,结果运行错误,显示我没有定义这三个函数,然后发布了问题,几位大佬提出了问题所在,可能就是 “div”的命名与函数库里面的一些基本定义重复了,只需要对“div”重命名就可以了。