]> git.sur5r.net Git - cc65/blobdiff - include/stdarg.h
Working
[cc65] / include / stdarg.h
index fcfc411e7eace95e3aa2cd63ed7b9e10ea4c6b68..be9ce537ff89976f507b3e72256f0152f0afb05d 100644 (file)
@@ -6,7 +6,7 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2000 Ullrich von Bassewitz                                       */
+/* (C) 1998-2001 Ullrich von Bassewitz                                       */
 /*               Wacholderweg 14                                             */
 /*               D-70597 Stuttgart                                           */
 /* EMail:        uz@musoftware.de                                            */
 
 typedef unsigned char* va_list;
 
-#define va_start(ap, fix)              ap = (va_list)&fix + *(((va_list)&fix)-1) - __fixargs__
-#define va_arg(ap,type)                ((type)*(ap -= ((sizeof (type) + 1) & ~1)))
+#define va_start(ap, fix)              ap = ((va_list)&(fix))
+#define va_arg(ap,type)                (*(type*)(ap -= ((sizeof (type) + 1) & ~1)))
 #define va_copy(dest, src)     ((dest)=(src))
 #define va_end(ap)
 
-/* This is only valid *before* the first call to va_arg. It will also work
- * only for int sized parameters.
+/* PLEASE NOTE: The old va_fix macro is no longer needed. Just access the
+ * parameters by name.
+#define va_fix(ap, offs)               (*(unsigned*)(ap+(__fixargs__-2*offs)))
  */
-#define va_fix(ap, offs)       *(ap+(__fixargs__-2*offs))