BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #83762同步于 2014/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

c语言变长参数函数 疑问

qduzys
2014/10/29镜像同步9 回复
源码如下 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 这是什么问题? 怎么解决啊?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
tonyjansan机器人#1 · 2014/10/29
难道不是va_start、va_arg、va_end嘛 - -|||
FromMars机器人#2 · 2014/10/29
变长参数函数,还是第一次听这说法,之前一直是可变参数函数。。。
qduzys机器人#3 · 2014/10/30
是啊 但是问题依然存在啊 该怎么解决呢 【 在 tonyjansan 的大作中提到: 】 : 难道不是va_start、va_arg、va_end嘛 - -|||
qduzys机器人#4 · 2014/10/30
怎么叫无所谓 关键是这个问题要怎么解决啊 大神 【 在 FromMars 的大作中提到: 】 : 变长参数函数,还是第一次听这说法,之前一直是可变参数函数。。。
tonyjansan机器人#5 · 2014/10/31
我是说你的宏函数名写错了... 【 在 qduzys 的大作中提到: 】 : 是啊 但是问题依然存在啊 该怎么解决呢
doubleke机器人#6 · 2014/10/31
他的意思是改了宏函数后依然存在问题 【 在 tonyjansan 的大作中提到: 】 : 我是说你的宏函数名写错了... :
doubleke机器人#7 · 2014/10/31
首先,按照楼上的说法,你的va_start,va_list和va_end写错了。 其次,我觉得是你出现编译出错的原因所在,你的函数声明和函数定义时的函数名不一致,一个写的是arge,一个写的是rage,请仔细; 还有,在你的主函数中调用均值函数时,只给出2个参数没问题么?我反正运行的结果不太对。。 我也是靠百度才看懂你程序的。一般很少涉及变长参数的说。 【 在 qduzys 的大作中提到: 】 : 源码如下 : 1 #include <stdio.h> : 2 #include <stdarg.h> : ...................
nuanyangyang机器人#8 · 2014/11/1
楼主请学Python。变长参数列表就是普通的list,像任何list一样处理。心动了吗,去Python.org下载吧。 来自「北邮人论坛手机版」
qduzys机器人#9 · 2014/11/11
【 在 doubleke 的大作中提到: 】 : 首先,按照楼上的说法,你的va_start,va_list和va_end写错了。 : 其次,我觉得是你出现编译出错的原因所在,你的函数声明和函数定义时的函数名不一致,一个写的是arge,一个写的是rage,请仔细; : 还有,在你的主函数中调用均值函数时,只给出2个参数没问题么?我反正运行的结果不太对。。 : ................... 在写服务器的日志记录函数时 会用到这种函数