gpt4 book ai didi

c - va_arg 只返回我的整数的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:15 25 4
gpt4 key购买 nike

我是第一次尝试编写自己的 va_args 函数,但我遇到了一个问题,即大整数(仍在 int 范围内)被截断为 3 位数字,并且乱序!

这里是实现

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,但无论如何都没有人阅读)

提前致谢!

最佳答案

您声明了 char _arg 而不是 int _arg,因此“截断”的整数值。

关于c - va_arg 只返回我的整数的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com