首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单变参数函数,编译通不过

2012-05-10 
简单变参数函数,求助,编译通不过#include stdio.hint add(int n,...)int main(){int a,b,c,dscanf(%d

简单变参数函数,求助,编译通不过
#include <stdio.h>
int add(int n,...);
int main()
{
  int a,b,c,d;
  scanf("%d%d%d%d",&a,&b,&c,&d);
  printf("%d",add(4,a,b,c,d));
  return 0;
}
int add(int n,...)
{
  int i,sum=0;
  va_list argptr;
  va_start(argptr,n);
  for(i=0;i<n;i++)
  sum+=va_arg(argptr,int);
  va_end(argptr);
  return sum;
}
这是我的代码,很简单,就是实现n个数的相加,但是编译通不过

[解决办法]

C/C++ code
#include <stdio.h>#include <stdarg.h>int add(int n,...);int main(){   int a,b,c,d;   scanf("%d%d%d%d",&a,&b,&c,&d);   printf("%d",add(4,a,b,c,d));   return 0;}int add(int n,...){   int i,sum=0;   va_list argptr;   va_start(argptr,n);   for(i=0;i<n;i++)   sum+=va_arg(argptr,int);   va_end(argptr);   return sum;}
[解决办法]
C/C++ code
#include <stdio.h>#include <stdarg.h>int add(int n,...){   int i,sum=0;   va_list argptr;   va_start(argptr,n);   for(i=0;i<n;i++)   sum+=va_arg(argptr,int);   va_end(argptr);   return sum;}int main(){   int a,b,c,d;   scanf("%d%d%d%d",&a,&b,&c,&d);   printf("%d",add(4,a,b,c,d));   return 0;}
[解决办法]
在linux的shell中敲命令 man va_start

会得到

#include <stdarg.h>

void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);
void va_copy(va_list dest, va_list src);

你就知道要那些头文件了。
[解决办法]
是不是没有包含头文件:#include <stdarg.h>

热点排行