返回信息流源码如下
1 #include <stdio.h>
2 #include <stdarg.h>
3
4 float myavearge(int,...);
5
6 int main()
7 {
8 float average;
9 int a=2;
10 int b=3;
11
12 average=myavearge(5,a,b);
13 printf("the avearge of %d and %d is %f\n",a,b,average);
14
15 return 0;
16
17 }
18
19 float myaverage(int n_values,...)
20 {
21 va_list args;
22 int i;
23 float sum=0;
24
25 var_start(args,n_values);
26
27 for(i=0;i<n_values;i++)
28 {
29 sum+=var_arg(args, int);
30 //sum+=value;
31 }
32 var_end(args);
33
34 return sum/n_values;
35 }
编译后提示
test.c: In function ‘myaverage’:
test.c:29:22: error: expected expression before ‘int’
编译器:gcc 4.6.3
这是什么问题? 怎么解决啊?
这是一条镜像帖。来源:北邮人论坛 / cpp / #83762同步于 2014/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
c语言变长参数函数 疑问
qduzys
2014/10/29镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
是啊 但是问题依然存在啊 该怎么解决呢
【 在 tonyjansan 的大作中提到: 】
: 难道不是va_start、va_arg、va_end嘛 - -|||
怎么叫无所谓 关键是这个问题要怎么解决啊 大神
【 在 FromMars 的大作中提到: 】
: 变长参数函数,还是第一次听这说法,之前一直是可变参数函数。。。
首先,按照楼上的说法,你的va_start,va_list和va_end写错了。
其次,我觉得是你出现编译出错的原因所在,你的函数声明和函数定义时的函数名不一致,一个写的是arge,一个写的是rage,请仔细;
还有,在你的主函数中调用均值函数时,只给出2个参数没问题么?我反正运行的结果不太对。。
我也是靠百度才看懂你程序的。一般很少涉及变长参数的说。
【 在 qduzys 的大作中提到: 】
: 源码如下
: 1 #include <stdio.h>
: 2 #include <stdarg.h>
: ...................
楼主请学Python。变长参数列表就是普通的list,像任何list一样处理。心动了吗,去Python.org下载吧。
来自「北邮人论坛手机版」
【 在 doubleke 的大作中提到: 】
: 首先,按照楼上的说法,你的va_start,va_list和va_end写错了。
: 其次,我觉得是你出现编译出错的原因所在,你的函数声明和函数定义时的函数名不一致,一个写的是arge,一个写的是rage,请仔细;
: 还有,在你的主函数中调用均值函数时,只给出2个参数没问题么?我反正运行的结果不太对。。
: ...................
在写服务器的日志记录函数时 会用到这种函数