stdargGnu.h
资源名称:ixp425BSP.rar [点击查看]
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:
VxWorks
开发平台:
C/C++
- /* stdargGnu.h - Ansi C standard arguments header file */
- /*
- modification history
- --------------------
- 01b,03mar98,jmb clean-up
- 01a,27feb98,jmb A simplified version of stdarg.h from Cygwin32, Beta 18.
- */
- /*
- DESCRIPTION
- This file contains macros and typedefs for varargs.
- Note: This file should not be included directly! The correct file
- to include is <stdarg.h>.
- This file was derived from the cygwin32-b18 version of gcc/ginclude/stdarg.h.
- */
- #ifndef __INCstdargh
- Bug!! Please use #include <stdarg.h>
- #endif
- #ifndef __INCstdargGnuh
- #define __INCstdargGnuh
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* stdarg.h for GNU.
- Note that the type used in va_arg is supposed to match the
- actual type **after default promotions**.
- Thus, va_arg (..., short) is not valid. */
- #ifndef _STDARG_H
- #ifndef _ANSI_STDARG_H_
- #ifndef __need___va_list
- #define _STDARG_H
- #define _ANSI_STDARG_H_
- #endif /* not __need___va_list */
- #undef __need___va_list
- /* Define __gnuc_va_list. */
- #ifndef __GNUC_VA_LIST
- #define __GNUC_VA_LIST
- typedef void *__gnuc_va_list;
- #endif
- /* Define the standard macros for the user,
- if this invocation was from the user program. */
- #ifdef _STDARG_H
- /* Amount of space required in an argument list for an arg of type TYPE.
- TYPE may alternatively be an expression whose type is used. */
- #define __va_rounded_size(TYPE)
- (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
- #define va_start(AP, LASTARG)
- (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG)))
- #undef va_end
- void va_end (__gnuc_va_list); /* Defined in libgcc.a */
- #define va_end(AP) ((void)0)
- /* We cast to void * and then to TYPE * because this avoids
- a warning about increasing the alignment requirement. */
- /* CYGNUS LOCAL mn10200/law */
- /* END CYGNUS LOCAL */
- /* This is for little-endian machines; small args are padded upward. */
- #define va_arg(AP, TYPE)
- (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)),
- *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE))))
- /* Copy __gnuc_va_list into another variable of this type. */
- #define __va_copy(dest, src) (dest) = (src)
- #endif /* _STDARG_H */
- #ifdef _STDARG_H
- /* Define va_list, if desired, from __gnuc_va_list. */
- /* We deliberately do not define va_list when called from
- stdio.h, because ANSI C says that stdio.h is not supposed to define
- va_list. stdio.h needs to have access to that data type,
- but must not use that name. It should use the name __gnuc_va_list,
- which is safe because it is reserved for the implementation. */
- #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */
- #undef _VA_LIST
- #endif
- #ifdef _BSD_VA_LIST
- #undef _BSD_VA_LIST
- #endif
- /* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
- But on BSD NET2 we must not test or define or undef it.
- (Note that the comments in NET 2's ansi.h
- are incorrect for _VA_LIST_--see stdio.h!) */
- #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT)
- /* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */
- #ifndef _VA_LIST_DEFINED
- /* The macro _VA_LIST is used in SCO Unix 3.2. */
- #ifndef _VA_LIST
- /* The macro _VA_LIST_T_H is used in the Bull dpx2 */
- #ifndef _VA_LIST_T_H
- typedef __gnuc_va_list va_list;
- #endif /* not _VA_LIST_T_H */
- #endif /* not _VA_LIST */
- #endif /* not _VA_LIST_DEFINED */
- #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__))
- #define _VA_LIST_
- #endif
- #ifndef _VA_LIST
- #define _VA_LIST
- #endif
- #ifndef _VA_LIST_DEFINED
- #define _VA_LIST_DEFINED
- #endif
- #ifndef _VA_LIST_T_H
- #define _VA_LIST_T_H
- #endif
- #endif /* not _VA_LIST_, except on certain systems */
- #endif /* _STDARG_H */
- #endif /* not _ANSI_STDARG_H_ */
- #endif /* not _STDARG_H */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __INCstdargGnuh */