*C变参函数示例,这个程序好像是以前摘自"K&R"

varargs.c

 

*使用步骤

1)包含<stdarg.h>,声明变参函数(至少一个固定参数,变参使用”…”)

2)声明指向变参的指针va_list

3)va_start(va_list,最后一个固定参数)宏初始化va_list,指向第一个可变参数地址

4)va_arg(va_list,参数类型),每次调用返回当前地址,并把va_list指向下个变参地址

5)var_end(va_list),注销va_list

 

*总结

---注意的地方

1)在于va_arg(),要保证取到正确的参数,适时返回,不能地址越界.

---实现原理简单说,根据宏+函数栈的内存结构确定获取变参地址.

 

*参考

http://www.ibm.com/developerworks/cn/linux/l-va/index.html

posted on 2012-04-26 11:15  戴忠  阅读(219)  评论(0编辑  收藏  举报