正天圣人 发表于 2024-5-29 10:52:38

大佬们,为什么我把小甲鱼的代码复制一下,居然报错了

大佬们,昨天还是正常运行的,今天就不行了,这是怎么回事

#include <stdio.h>
#include <stdarg.h>

int sum(int n, ...);

int sum(int n, ...) // 三个小点是占位符,表示参数个数不确定
{
      int i, sum = 0;
      va_list vap; // 定义参数列表

      va_start(vap, n); // 初始化参数列表,如果是 int sum(int gg, ...); 则这里应该是 va_start(vap, gg);
      for (i = 0; i < n; i++)
      {
                sum += va_arg(vap, int); // 获取参数值
      }
      va_end(vap); // 首尾工作,关闭参数列表

      return sum;
}

int main()
{
      int result;

      result = sum(3, 1, 2, 3);

      printf("result = %d\n", result);

      return 0;
}

FishC 发表于 2024-5-29 10:52:54

大佬们好!从你提供的代码来看,看起来是你没有包含必要的头文件。你需要添加以下两个头文件:

#include <stdio.h>
#include <stdarg.h>

这样就可以解决你遇到的问题了。

在C语言中,如果你使用到了某个函数或者变量,就必须先声明该函数或者变量的存在,这样编译器才知道它们是什么。头文件的作用就是声明一些常用的函数和变量,方便我们直接调用。

在你的代码中,你使用了`va_list`、`va_start()`和`va_end()`这几个函数,这些函数都定义在`<stdarg.h>`头文件中。而`printf()`则定义在`<stdio.h>`头文件中。

所以,为了让你的代码正常运行,你需要在代码开头添加以下两个头文件的引入:

#include <stdio.h>
#include <stdarg.h>

之后,你的代码就可以顺利编译和运行了。

祝你编程愉快!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2024-5-29 21:35:12

报了什么错误?

正天圣人 发表于 2024-5-30 12:35:42

不二如是 发表于 2024-5-29 21:35
报了什么错误?

#include nested too deeply

正天圣人 发表于 2024-5-30 13:26:06

不二如是 发表于 2024-5-29 21:35
报了什么错误?

大佬,我解决了,不知道怎么回事,我的c语言库里面的#include <stdarg.h>文件变成了我的源代码,所以就反复调用,我把编程软件删了重下就可以了

芜湖666 发表于 2024-5-30 15:57:11

2121

尹玄睿 发表于 2024-5-31 08:54:17

速度前排{:5_102:}

某一个“天” 发表于 2024-5-31 11:25:35

{:10_256:}

936522819 发表于 2024-5-31 13:01:31

正天圣人 发表于 2024-5-30 13:26
大佬,我解决了,不知道怎么回事,我的c语言库里面的#include 文件变成了我的源代码,所以就反复调用,我 ...

学到了学到了,吸取教训

ZZxxccvvbbnnmm 发表于 2024-6-5 22:47:44

AAssddffgghhjjk 发表于 2024-6-5 22:48:01

MMnnbbvvccxxzz 发表于 2024-6-5 22:48:12

Mnklpo 发表于 2024-6-5 22:48:24

Poklmn 发表于 2024-6-5 22:48:35

PPooiiuuyyttrre 发表于 2024-6-5 22:48:48

zhangchenyvn 发表于 2024-6-12 18:31:19

这问题总结出一个道理:调试不行,重下软件试试

譯羊 发表于 2024-6-12 19:42:35

前来学习看看
页: [1]
查看完整版本: 大佬们,为什么我把小甲鱼的代码复制一下,居然报错了