#ifndef _H_STDARG
#define _H_STDARG

#ifndef __LAVA__
#include <stdarg.h>
#define va_start_ex(ap,v,n) va_start(ap,v)
#else
#define va_list addr
#define _INTSIZEOF(n)       ( (sizeof(n) + sizeof(long) - 1) & ~(sizeof(long) - 1) )
//可变参函数如果只有一个普通函参的话, 可以允许使用va_start, 否则将与标准C不兼容, 固建议使用
//#define va_start(ap,v)      ( ap = (va_list)&v - _INTSIZEOF(v) - 5)
//相比标准va_start, 需要传入普通函参的数量
#define va_start_ex(ap,v,n) ( ap = (va_list)&v - _INTSIZEOF(v) - 1 - n * 4 )
#define va_arg(ap,t)        ( *(t *)((ap -= _INTSIZEOF(t)) + _INTSIZEOF(t)) )
#define va_end(ap)          ( ap = (va_list)0 )
#endif

#endif
