|
|
1.1 ! root 1: ! 2: /* stdarg.h */ ! 3: /* ! 4: USAGE: ! 5: f( arg-declarations ... ) { ! 6: va_list ap; ! 7: va_start(ap, parmN); // parmN == last named arg ! 8: // ... ! 9: type arg = va_arg(ap, type); ! 10: // ... ! 11: va_end(ap); ! 12: } ! 13: */ ! 14: ! 15: #ifndef va_start ! 16: ! 17: typedef char *va_list; ! 18: #define va_end(ap) ! 19: #ifdef u370 ! 20: #define va_start(ap, parmN) ap =\ ! 21: (char *) ((int)&parmN + 2*sizeof(parmN) - 1 & -sizeof(parmN)) ! 22: #define va_arg(ap, mode) ((mode *)(ap = \ ! 23: (char *) ((int)ap + 2*sizeof(mode) - 1 & -sizeof(mode))))[-1] ! 24: #else ! 25: #define va_start(ap, parmN) ap = (char *)( &parmN+1 ) ! 26: #define va_arg(ap, mode) ((mode *)(ap += sizeof(mode)))[-1] ! 27: #endif ! 28: ! 29: #endif ! 30: ! 31:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.