OHHHxxxx 2024-01-08 20:17 采纳率: 71.4%
浏览 5
已结题

#C--编程问题,函数定义问题

我写了一段程序:

#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的定义都注释,结果运行错误,显示我没有定义这三个函数,
请问大家这两个问题是什么原因造成的呢?

  • 写回答

3条回答 默认 最新

  • threenewbee 2024-01-08 20:27
    关注

    换一个名字,比如 _div

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao
  • ¥20 Vite 打包的 Vue3 组件库,图标无法显示
  • ¥15 php 同步电商平台多个店铺增量订单和订单状态
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题