海阔天空lanpeng.blog.chinaunix.net
lanlovehua
全部博文(134)
linux-软件应用(0)
2022年(1)
2020年(7)
2018年(2)
2016年(5)
2015年(14)
2014年(21)
2013年(3)
2012年(1)
2011年(15)
2010年(30)
2009年(35)
lds33
koozool
恒华电子
water2oi
RHCE520
mallocya
wmyrzy
wb123456
cainiaoz
km康蒙92
zhangtin
KAKA55
qq526665
Bsolar
浪花小雨
gnsusn
分类: LINUX
2010-11-28 20:40:15
typedef char * va_list; /*
* Storage alignment properties */ #define _AUPBND (sizeof (acpi_native_int) - 1) //acpi_native_int 为4字节(32位)(根据机子字数而定) #define _ADNBND (sizeof (acpi_native_int) - 1) /* * Variable argument list macro definitions */ #define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) #define va_end(ap) (void) 0 #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
#include <stdio.h> #include <stdarg.h> double sum_fun(int num, ...); //num为参数个数,此函数返回除num外所有参数之和。 int main() { double d; d = sum_fun(2, 5.5, 6.5); return 0; } double sum_fun(int num, ...) { double sum = 0.0; double t; va_list argptr; //va_list 即 char *,指向char类型的指针。 va_start(argptr, num); for(; num; num--){ t = va_arg(argptr, double); sum = sum + t; } va_end(argptr); return sum; }
//这里假设 &num = 0xbff69ce0。
//
上一篇:从PC总线到ARM的内部总线
下一篇:Linux ELF文件学习(1)
chinaunix网友2010-11-30 10:56:24
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com
登录 注册