简单变参数函数,求助,编译通不过
#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个数的相加,但是编译通不过
[解决办法]
#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;}
[解决办法]
#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>