读书人

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

发布时间: 2012-05-10 16:02:39 作者: rapoo

简单变参数函数,求助,编译通不过
#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>

读书人网 >C语言

热点推荐