PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Frage zu va_arg



ContainerDriver
14-12-2003, 17:00
Hi,
kann man für var_arg (bzw. va_start(list,last)) als last eine Strukur verwenden (ähnlich der unteren), oder führt das u.U. zu einem SIGSEGV (bei meinem prog kommt ein SIGSEGV und ich such schon ewig nach dem Fehler finde ihn aber nicht...).



struct test
{
char **items;
};

//main....
int irgendetwas=100;

test*bla=new test;
test->items=new char*[irgendetwas];
va_arg_func(bla,...);
//....

//va_arg_func...
va_list list;
va_start (list,bla); //HIER
//...


Ich würde es sehr schön finden, wenn mir jemand eine Antwort geben könnte,
MfG
Florian

wraith
14-12-2003, 17:59
Funktionen mit Variablerargumenteliste funktionieren auch mit Strukturen,wobei du ja sogar nur einen Zeiger übergibst.


#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>

struct Bar
{
char *array;
};

void foo(struct Bar *bar,...)
{
va_list ap;
va_start(ap,bar);

printf("%s\n",bar->array);

va_end(ap);
}

int main()
{
struct Bar bar;
bar.array = malloc(100);
strcpy(bar.array,"Hello World");
foo(&bar);
return 0;
}

ContainerDriver
14-12-2003, 19:56
Mist, mist, mist, mist dann war das nicht der Fehler, argggggggggggggggggggggggg:(
Naja, Danke,

MfG

Florian