Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!brl-adm!brl-smoke!gwyn From: gwyn@brl-smoke.ARPA (Doug Gwyn ) Newsgroups: comp.lang.c,comp.unix.wizards,comp.arch Subject: request for info about weird varargs implementations Message-ID: <6537@brl-smoke.ARPA> Date: Thu, 8-Oct-87 08:24:54 EDT Article-I.D.: brl-smok.6537 Posted: Thu Oct 8 08:24:54 1987 Date-Received: Sun, 11-Oct-87 01:32:28 EDT Organization: Ballistic Research Lab (BRL), APG, MD. Lines: 29 Keywords: varargs stdarg C standard Xref: mnetor comp.lang.c:4767 comp.unix.wizards:4768 comp.arch:2556 Would anyone who knows of an implementation of (or ) that doesn't approximate the usual model: typedef char *va_list; #define va_dcl int va_alist; #define va_start(list) list = (char *) &va_alist #define va_end(list) #ifdef gould #define va_arg(list, mode) ((mode *)(list = \ (char *) (sizeof(mode) > 4 ? (int)list + 2*8 - 1 & -8 \ : (int)list + 2*4 - 1 & -4)))[-1] #elif defined(u370) #define va_arg(list, mode) ((mode *)(list = \ (char *) ((int)list + 2*sizeof(mode) - 1 & -sizeof(mode))))[-1] #else /* VAX, PDP-11, 3B, etc. */ #define va_arg(list, mode) ((mode *)(list += sizeof(mode)))[-1] #endif please send me as much information as you can about it. In particular, I would like to hear from anyone who thinks that va_start() and va_end() must expand to something containing, respectively, { and }, as I remember seeing once on a Pyramid OSx system. This information will be used to help determine the ANSI C specs for , so it's important! Send me E-mail directly, posting to the newsgroup only if you can't seem to get mail to me. Thanks. - Gwyn@BRL.MIL