Annotation of researchv9/cmd/cfront/CC/varargs.h, revision 1.1.1.1

1.1       root        1: 
                      2: #ifndef va_start
                      3: 
                      4: /* 
                      5:    Proper usage of this version of varargs is slightly different from
                      6:    that found in C. Functions are declared
                      7: 
                      8:        foo(int arg ...) { va_list ap; ... va_start(ap,arg1) ; ...
                      9: 
                     10:    rather than
                     11: 
                     12:        foo(va_alist) va_dcl { va_list ap; ... va_start(ap);
                     13: 
                     14:    use of va_arg, and va_end remain the same.
                     15: 
                     16:    Arg does not have to be int, but it must be declared.  Hence
                     17:    all calls of foo must have the same first type for their first
                     18:    argument. (In the most common printf-like cases the first argument
                     19:    is a char* format.)
                     20:  */ 
                     21: 
                     22: typedef char *va_list;
                     23: #define va_start(list,last) list = (char *) &last
                     24: #define va_end(list)
                     25: #ifdef u370
                     26: #define va_arg(list, mode) ((mode *)(list = \
                     27:        (char *) ((int)list + 2*sizeof(mode) - 1 & -sizeof(mode))))[-1]
                     28: #else
                     29: #define va_arg(list, mode) ((mode *)(list += sizeof(mode)))[-1]
                     30: #endif
                     31: 
                     32: #endif 
                     33: 
                     34: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.