Frank Nielsen wrote:
> void test1_1( char* message, ... ) {
> va_list args;
> va_start( args, message );
> vprintf( message, args );
> va_end( args );
>
> }
>
> void test1_2( char* message, ... ) {
> va_list args;
> va_start( args, message );
> test1_1( message, args );
> va_end( args );
> }
du kalder test1_1 med en reference til en va_list.. dvs din vsprintf bliver
kaldt med en va_list hvor første variabel er en va_list... ændring til flg
vil hjælpe:
vprintf(message,va_arg(args,va_list));
> >>>>>>>>>>> Forsøg med "det jeg plejer" <<<<<<<<<<<<<<<<<<<<<
> void test2_1( char* message, ... ) {
> vprintf( message, (char*)&message+sizeof(char*) );
> }
>
> void test2_2( char* message, ... ) {
> test2_1( message, (char*)&message+sizeof(char*) );
> }
UHA!... Den måde har jeg aligevel aldrig set før
Samme problem.. Der bliver kun sendt et parameter over.. En reference til en
position på den forrige funktions stack. I stedet for, som det nok var
tænkt, alle parametre. flg ville vist løse det:
vprintf( message, *(char*)&message+sizeof(char*) );
/Jesper Toft