adding dyn_va_arg to D?

Fawzi Mohamed fawzi at gmx.ch
Thu Apr 3 04:48:11 PDT 2008


I came across a bug in gdc std.boxer.
http://d.puremagic.com/issues/show_bug.cgi?id=1968
This bug is connected with the fact that va_list != (void *).

A possible solution is to enforce va_list == (void *) in D, as was 
proposed, and this would also make indexing of arguments easier.

Still I think that there could be a good reason to keep va_list != 
(void *) (even if D has an hidden extra argument for variadic 
functions), namely to make the job for debuggers and other things that 
need to unwind the stack easier, by being compatible with the C ABI 
also for variadic functions.

The issues I encountred could also be fixed cleanly by having another 
function (along with the template va_arg) that is dynamic, like this
void * dyn_va_arg(in TypeInfo t,inout va_list)

I think that such a function is easy to provide and would allow a lot 
more of runtime thinkering while allowing va_list to be != (void *).

Fawzi




More information about the Digitalmars-d mailing list