宏与类型定义
_INTSIZEOF宏
宏定义:
// vadefs.h
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
_ADDRESSOF
宏定义:
// vadefs.h
#define _ADDRESSOF(v) ( &reinterpret_cast<const char &>(v) )
va_start宏
宏定义:
// stdarg.h
#define va_start _crt_va_start
// vadefs.h
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
作用: 使 va_list 指向起始的参数
参数:
- ap 为 va_list 类型的变量
- v 函数的第一个固定参数
va_arg宏
宏定义:
// stdarg.h
#define va_arg _crt_va_arg
// vadefs.h
#define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
作用: 检索参数,每次提取一次可变参数,arg 就向上移动一次.无论它现在指向的是不是参数它都会读取arg参数里存放地址里的内容
<