V9/include/CC/varargs.h

Compare this file to the similar file:
Show the results in this format:


#ifndef va_start

/* 
   Proper usage of this version of varargs is slightly different from
   that found in C. Functions are declared

       foo(int arg ...) { va_list ap; ... va_start(ap,arg1) ; ...

   rather than

       foo(va_alist) va_dcl { va_list ap; ... va_start(ap);

   use of va_arg, and va_end remain the same.

   Arg does not have to be int, but it must be declared.  Hence
   all calls of foo must have the same first type for their first
   argument. (In the most common printf-like cases the first argument
   is a char* format.)
 */ 

typedef char *va_list;
#define va_start(list,last) list = (char *) &last
#define va_end(list)
#ifdef u370
#define va_arg(list, mode) ((mode *)(list = \
	(char *) ((int)list + 2*sizeof(mode) - 1 & -sizeof(mode))))[-1]
#else
#define va_arg(list, mode) ((mode *)(list += sizeof(mode)))[-1]
#endif

#endif