首页 > 其他 > 详细

va_list

时间:2014-02-12 00:05:34      阅读:517      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
void Log( const TCHAR *pszFormat, ... )
{
        TCHAR buf[1024] ;
        va_list arglist ;

        try
        {
            _tcscpy_s ( buf, 1023, _T("\n") ) ;
            va_start(arglist, pszFormat) ;

      //   Type xx = va_arg( ap, Type );
      //依次获取指定参数,定义类型必须相同
_vstprintf_s(
&buf[_tcslen(buf)], 1023-_tcslen(buf), pszFormat, arglist) ; va_end(arglist) ; _tprintf ( buf ) ; } catch ( ... ){} }
bubuko.com,布布扣
 
INTSIZEOF 宏,获取类型占用的空间长度,最小占用长度为int的整数倍:
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
VA_START宏,获取可变参数列表的第一个参数的地址(ap是类型为va_list的指针,v是可变参数最左边的参数):
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
VA_ARG宏,获取可变参数的当前参数,返回指定类型并将指针指向下一参数(t参数描述了当前参数的类型):
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
VA_END宏,清空va_list可变参数列表:
#define va_end(ap) ( ap = (va_list)0 )

va_list

原文:http://www.cnblogs.com/iclk/p/3544675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!