Path: utzoo!attcan!uunet!husc6!rutgers!att!ulysses!andante!alice!ark From: ark@alice.UUCP (Andrew Koenig) Newsgroups: comp.lang.c Subject: Re: passing variable numbers of arguments Message-ID: <8699@alice.UUCP> Date: 7 Jan 89 16:57:33 GMT References: <899@thor.stolaf.edu> Distribution: na Organization: AT&T Bell Laboratories, Liberty Corner NJ Lines: 61 In article <899@thor.stolaf.edu>, mackenzi@agnes.uucp (David MacKenzie) writes: > The following program produces unexpected results: > #include > main () > { > printf ("foo:\n"); > foo (1, 2, 3, 0); > printf ("bar:\n"); > bar (4, 5, 6, 0); > } > foo (va_alist) > va_dcl > { > bar (va_alist); > } > bar (va_alist) > va_dcl > { > va_list list; > int i; > va_start (list); > while (i = va_arg (list, int)) > printf ("%d\n", i); > va_end (list); > } There is no way to pass your entire argument list to another function. The closest you can come is to pass a va_list. For example: main () { printf ("foo:\n"); foo (1, 2, 3, 0); } foo (va_alist) va_dcl { va_list list; va_start (list); bar (list); va_end (list); } bar (x) va_list x; { int i; while (i = va_arg (x, int)) printf ("%d\n", i); } -- --Andrew Koenig ark@europa.att.com