chenhuhu 发表于 2022-9-5 19:33:30

为什么这个代码在dev里面好好的,在vs就会报错啊?

本帖最后由 chenhuhu 于 2022-9-5 19:36 编辑


这个代码在#include <stdio.h>
#include <stdlib.h>

int main()
{
        int max(int x, int y);
        int a, b, c;
        while (1)
        {
                printf("请输入两个整数,中间用空格隔开:");
                scanf_s("%d %d", &a, &b);
                c = max(a, b);
                printf("max=%d\n", c);
                system("pause");
        }
        return 0;
}

int max(int x, int y)
{
        int z;
        if (x > y)z = x;
        else z = y;
        return(z);
}dev里面可以运行,但是vs就会报错,哪位大佬知道为什么报错以及怎么修改嘛?

临时号 发表于 2022-9-5 19:33:31

#include <stdio.h>
#include <stdlib.h>

int myMax(int x, int y);// 函数定义要在main函数外
int main()
{
        int a, b, c;
        while (1)
        {
                printf("请输入两个整数,中间用空格隔开:");
                scanf_s("%d %d", &a, &b);
                c = myMax(a, b);
                printf("max=%d\n", c);
                system("pause");
        }
        return 0;
}

int myMax(int x, int y)// max就是头文件stdlib.h的一个函数,所以不能用max
{
        int z;
        if (x > y)z = x;
        else z = y;
        return(z);
}

陈尚涵 发表于 2022-9-5 21:22:22

dev雀食可以运行,但这不说明你的代码没有问题
注意第六行
你想定义原型
但是原型得在外面定义
所以无效

两手空空儿 发表于 2022-9-6 09:52:44

if (x > y)z = x;
      else z = y;
这个用 z = x > y ? x : y ; 效率会更高

dolly_yos2 发表于 2022-9-6 10:33:31

临时号 发表于 2022-9-5 23:26


据我所知(以及我在我使用的实现上进行的测试结果显示),名为 max 的函数并不一定出现在头文件 <stdlib.h> 中。尽管注意避免这些易于出现冲突的符号是得当的,称其“就是头文件 stdlib.h 的一个函数”似乎仍有所不妥

临时号 发表于 2022-9-6 12:55:15

dolly_yos2 发表于 2022-9-6 10:33
据我所知(以及我在我使用的实现上进行的测试结果显示),名为 max 的函数并不一定出现在头文件中。尽 ...

你说的很对,我昨天疏忽了
这个结果是我在VS中看到的,且将#include <stdlib.h>注释后可以使用max来作为函数名,所以我在写的时候就直接写了它是头文件stdlib.h的一个函数,确实不太严谨
页: [1]
查看完整版本: 为什么这个代码在dev里面好好的,在vs就会报错啊?