  64bit stdarg.h variable arguments? 
 The Question is:
 
Is there a decent implementation/support of varargs.h (stdarg.h) for 64bit
 applications? According to the definitions in both headers there is only
 _ptr32 support.
 
 The Answer is :
 
  Do not be confused by the cast to __char_ptr32 seen within the va_start
  and va_arg macros.  As you can observe from the attached example, the
  macros allow retrieving (long long) quadword values.
 
$ pipe cc x ; link x ; run x
44bb0
$ pipe cc/poin=long x ; link x ; run x
80000010
 
 
x.c
---
#include &lt;stdarg
#include &lt;stdio
#include &lt;stdlib
 
void foo(int i, ...) {
    va_list ap;
    void *ptr;
 
    va_start(ap, i);
    ptr = va_arg(ap, void*);
    printf("%llx\n", ptr);
 
 
main () {
   void *ptr = malloc(1);
   foo(0, ptr);
 
 
 Answer written or last revised on  14-JUL-2004 
