我想第一次寫我自己的va_args函數,我遇到一個問題,大整數(仍在int範圍內)被截斷爲3位數,訂購!va_arg只返回我的整數部分
下面是實現
void __sprintf(char * _string, ...)
{
int i = a_sizeof(_string); char _arg; int j =0; int format = 0;
va_list args;
va_start (args,_string);
for(; j < i; j++)
{
if(_string[j] == '\0')
break;
else if(_string[j] == '%')
{
format=1;
continue;
}
else if(format==1)
{
switch(_string[j])
{
case 'd':
_arg = va_arg(args,int);
printi(_arg); //Prints integers over serial by converting to ASCII
break;
default:
continue;
}
format = 0;
}
else
SerialPutChar(_string[j]);
}
va_end(args);
}
我能得到什麼,當我嘗試__sprintf("%d %d %d\n",32141,6400,919911);
是141 32
然後退出。我已經設置了斷點,有時它看起來像我得到總廢話通過。
猜疑: IAR的實現stdarg頭文件 完整的骨頭誤用的va_arg 的缺失精細打印的細節(這可能是粗體14pt,但沒有一個人無論如何讀取它)提前
謝謝!
嘗試刪除'va_start'及其參數列表之間的空格。 – Palec