diff options
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | include/stdarg.h | 12 |
2 files changed, 12 insertions, 3 deletions
@@ -16,7 +16,8 @@ Macro definitions: _BSD_SOURCE -- Enable BSD extensions. _SLIBC_SUPPRESS_WARNINGS -- Suppress all #warning and other warnings, this is primarily intended to be used when compiling slibc. - _PORTABLE_SOURCE -- Unconditionally disable all extensions. + _PORTABLE_SOURCE -- Unconditionally disable all extensions, and otherwise + help ensure that the source is portable. _LIBRARY_HEADER -- Alternative to _PORTABLE_SOURCE that should be used in header files for libraryes. This allows you to be sure that your library is diff --git a/include/stdarg.h b/include/stdarg.h index 801e5e8..bc07813 100644 --- a/include/stdarg.h +++ b/include/stdarg.h @@ -52,7 +52,11 @@ typedef __builtin_va_list va_list; * @param last:identifier The the last non-variadic argument. */ #ifndef va_start -# define va_start(state, last) __builtin_va_start(state, last) +# ifndef __PORTABLE +# define va_start(state, last) __builtin_va_start(state, last) +# else +# define va_start(state, last) { __builtin_va_start(state, last) +# endif #endif /** @@ -61,7 +65,11 @@ typedef __builtin_va_list va_list; * @param state:va_list The state of the variadic argument-reading. */ #ifndef va_end -# define va_end(state) __builtin_va_end(state) +# ifndef __PORTABLE +# define va_end(state) __builtin_va_end(state) +# else +# define va_end(state) } __builtin_va_end(state) +# endif #endif /** |