Problems with vprintf, va_start, va_end

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problems with vprintf, va_start, va_end

884 Views
mark99
Contributor I

Hello

 

I have implemented a function to output debug messages to rs232 and/or sd-card (MC9S12XDP512):

 

void WriteMonitor(char *theString, ...)

{

  va_list theArguments;

  set_printf(PutChar);

  va_start(theArguments, theString);

  (void)vprintf(theString, theArguments);

  va_end(theArguments);

}

 

static void PutChar(char theChar)

{

  SciDriverSendChar(theChar);

}

 

Sometimes I'll get illegal characters on the debug result (special characters and more characters the expected).

 

Second problem: I'll get compiler warning C5917 (removed dead assignment) on the line 'va_end(theArguments)'.

 

Any hints?

 

Thanks a lot!

Marc

Labels (1)
0 Kudos
2 Replies

429 Views
kef
Specialist I
  • Sometimes I'll get illegal characters on the debug result (special characters and more
  • characters the expected).

Maybe you have baudrate mismatch? Also you should make sure you have enough stack space. 

 

  • Second problem: I'll get compiler warning C5917 (removed dead assignment) on the line 'va_end(theArguments)'.

va_end macro clears theArguments pointer. Of cause this assignment is not used in your code and thus is dead. You may disable compiler warning adding this line somewhere above the va_end line :

#pragma MESSAGE DISABLE C5917

0 Kudos

429 Views
mark99
Contributor I

Thank you for the answer!

 

It's no baudrate mismatch, because I have the same problem writing on a SD card. Unfortunately it's not a problem with stack space.

 

Very tricky...

0 Kudos