home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
HITECH-C
/
Z8051H83.EXE
/
STDARG.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-21
|
1KB
|
53 lines
/* Macros for accessing variable arguments */
#ifndef _STDARG
#if (defined(i8051) && !EXTERNAL_STACK) || defined(m6805)
typedef near void * va_list[1];
#else
typedef void * va_list[1];
#endif
#ifdef m6805
#define va_start(ap, parmn) *ap = __va_start()
#pragma inline(__va_start)
extern near void * __va_start(void);
#define va_arg(ap, type) (*(*(near type **)ap)++)
#define _STDARG
#endif
#ifdef i8086
#ifdef FLAT_MODEL
#define _STACK_ALIGN 4
#else
#define _STACK_ALIGN 2
#endif
#endif
#ifdef z80
#define _STACK_ALIGN 2
#endif
#ifdef _STACK_ALIGN
#define va_start(ap, parmn) *ap = (char *)&parmn + ((sizeof(parmn)+_STACK_ALIGN-1)&~(_STACK_ALIGN-1))
#define va_arg(ap, type) (*(*(type **)ap)++)
#define _STDARG
#endif
#if i8051 && !EXTERNAL_STACK
#define va_start(ap, parmn) *ap = &parmn;
#define va_arg(ap, type) (*--(*(type **)ap))
#define _STDARG
#endif
#ifndef _STDARG
#define va_start(ap, parmn) *ap = (char *)&parmn + sizeof parmn
#define va_arg(ap, type) (*(*(type **)ap)++)
#define _STDARG
#endif
#define va_end(ap)
#endif /* STDARG */