关于VA_LIST

来源:互联网 发布:js 渐变 编辑:程序博客网 时间:2024/06/01 12:24

VA_LIST是在C语言中解决数量不定的参数的一组宏,源码如下:

            typedef char * va_list; 
           #define va_start(ap,v)   ( ap = (va_list)&v + _INTSIZEOF(v) ) 
           #define va_arg(ap,t)     ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
           #define va_end(ap) ( ap = (va_list)0 )

         (注:1. #define _INTSIZEOF(n)  ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )

                 2.C语言的参数是从右往左存储的 )

  1. 首先定义一个VA_LIST类型的变量(即指针变量),它指向参数的地址。

   2.va_start是用来初始化上一步定义的VA_LIST类型的变量的,
http://www.360doc.com/content/10/0421/11/1265113_24115228.shtml

http://www.hudong.com/wiki/va_list

http://blog.pfan.cn/andyhou/41937.html

原创粉丝点击