https://issues.dlang.org/show_bug.cgi?id=21974
--- Comment #11 from Walter Bright <[email protected]> --- The following code: #include <stdarg.h> #define MAXARGS 31 int execl(const char *file, const char *args, ...) { va_list ap; char *array[MAXARGS +1]; int argno = 0; va_start(ap, args); while (args != 0 && argno < MAXARGS) { array[argno++] = args; args = va_arg(ap, const char *); } array[argno] = (char *) 0; va_end(ap); return execv(file, array); } when compiled with gcc -E test.c produces: # 1 "test.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "test.c" # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h" 1 3 4 # 40 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 98 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 2 "test.c" 2 int execl(const char *file, const char *args, ...) { va_list ap; char *array[31 +1]; int argno = 0; __builtin_va_start(ap,args); while (args != 0 && argno < 31) { array[argno++] = args; args = __builtin_va_arg(ap,const char *); } array[argno] = (char *) 0; __builtin_va_end(ap); return execv(file, array); } --
