问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添加了Main函数)结果串口输出的就是乱码了。是不是我遗漏了什么?不然,怎么会是乱码呢?调此公司的这个测试程序,串口输出都是正常的啊
void Uart_Printf(char *fmt,...)
{
va_list ap;
char string[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
Uart_SendString(string);
va_end(ap);
}
函数中的va_start是什么东东?我怎么从来没见过?
The ANSI C standard macros, defined in STDARG.H
va_start sets arg_ptr to the first optional argument in the list of arguments passed to the function. The argument arg_ptr must have va_list type. The argument prev_param is the name of the required parameter immediately preceding the first optional argument in the argument list. If prev_param is declared with the register storage class, the macro’s behavior is undefined. va_start must be used before va_arg is used for the first time.