小威
...

  1.变参函数 : 声明中带有“...”的函数

      (1)函数调用时参数个数不确定

       (2)注意: 

            变参函数中至少有一个固定参数

            变参函数在声明,定义时参数不固定

            变参列表在调用参数中, 参数个数,类型都是固定的

  2.va_list  类型名   : typedef char* va_list

   va_start  va_arg   va_end  是宏

        va_start : 保存第一个变参列表  例: va_start(ap, last)  : &last + sizeof(last)

        va_arg : 取出当前变参并将指针指向下一变参  例 : va_arg(ap, type)   : *((type *)((ap += sizeof(type)) - sizeof(type)))

        va_end : 将指针清空

    扩展 : Tnd(type , tnd)    : (sizeof(type) + tnd) & ~tnd      结果为4的整数倍    通常tnd 是 3U

  3.使用va_arg(ap, type) 

      注意事项: 整形提升 : 若获取的类型为char会提升为int

  4.整形提升的目的 : 为了对齐  

  

  英语 : decimal(小数)

posted on 2013-08-17 08:22  小威_  阅读(158)  评论(0编辑  收藏  举报