Path: utzoo!attcan!uunet!ncrlnk!ncrcae!hubcap!gatech!uflorida!haven!adm!smoke!gwyn From: gwyn@smoke.BRL.MIL (Doug Gwyn ) Newsgroups: comp.lang.c Subject: Re: varargs strangeness? Message-ID: <9207@smoke.BRL.MIL> Date: 16 Dec 88 21:11:09 GMT References: <353@bdrc.UUCP> Reply-To: gwyn@brl.arpa (Doug Gwyn (VLD/VMB) ) Organization: Ballistic Research Lab (BRL), APG, MD. Lines: 11 In article <353@bdrc.UUCP> jcl@bdrc.UUCP (John C. Lusth) writes: >What's going wrong, how do I fix it, and why does the macro add >that extra star to the cast? You basically answered your own question -- the * is added in order to get a pointer to the right type and of the right width, and that is what breaks in your case, because not all types can correctly have * appended to produce pointers to those types. The obvious solution is to use a typedef for (void (*)()) and use that in the invocation of va_arg().