⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdarg.h

📁 TI TMS320C54X C语言编译及汇编开发包
💻 H
字号:
/****************************************************************************/
/* stdarg.h v4.00                                                           */
/* Copyright (c) 1996-2004 Texas Instruments Incorporated                   */
/****************************************************************************/

#ifndef _STDARG
#define _STDARG

#ifdef __cplusplus
#define _NS_PREFIX std::
namespace std {
#else
#define _NS_PREFIX
#endif /* __cplusplus */

typedef int *va_list;

#ifdef __cplusplus
} /* namespace std */
#endif

#define va_start(ap, parmN) ((ap)=((_NS_PREFIX va_list)__va_parmadr(parmN))+ \
	((__va_argref(parmN) ? sizeof(&parmN) : sizeof(parmN))-sizeof(int)))

#define va_end(ap)

/****************************************************************************/
/* RETURN THE NEXT VALUE ON THE STACK ...                                   */
/*                                                                          */
/* (<advance ap>, <access the value>) BECOMES ...                           */
/*                                                                          */
/* ap += 1 + <1 if type is long or float and current address is even>;      */
/* if      (<type is passed by address [struct or union]>) return **ap;     */
/* else if (<type is integer size>)                        return *ap;      */
/* else    (<type must be long or float>)                  return *ap++;    */
/*                                                                          */
/* LONG/FLOATS ARE ALWAYS ALIGNED ON AN EVEN WORD BOUNDARY, EVEN WHEN       */
/* PASSED AS PARAMETERS, THUS ap MUST BE ALIGNED FOR THOSE ACCESSES.        */
/* ap MUST ALWAYS BE POINTING 1 AWAY FROM THE NEXT OBJECT, THUS THE POST    */
/* INCREMENT ON A LONG/FLOAT ACCESS.                                        */
/****************************************************************************/
#define va_arg(ap, type)						\
 ( ((ap) += 1 + (   !__va_argref(type)					\
	       && sizeof(type) != sizeof(int)				\
	       && !((int) (ap) & 1) ) ),			        \
   (__va_argref(type)             ? (** (type **) (ap)) :		\
    (sizeof(type) == sizeof(int) ? (* (type *) (ap))   :		\
				   (* (type *) ((ap)++)) ) ) )

#ifdef __cplusplus

#ifndef _CPP_STYLE_HEADER
using std::va_list;
#endif /* _CPP_STYLE_HEADER */

#endif /* __cplusplus */

#else

#ifdef __cplusplus

#ifndef _CPP_STYLE_HEADER
using std::va_list;
#endif /* _CPP_STYLE_HEADER */

#endif /* __cplusplus */

#endif /* _STDARG */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -