今天,我在ARM工具链EABI (交叉编译器)上遇到了一些奇怪的问题。
这个问题是,当我尝试使用snwprintf()将浮点值转换为string时,我得到了一些没有实际浮点值的垃圾字符串。
smaple代码如下所示:
float floatValue = 1.0;
snwprintf (buffer, bufferSize, _T("%g"), floatValue);
然后我调试snwprintf,发现变量参数列表(va_arg)没有指向确切的数据值。通过转储内存,我们能够找到变量参数列表中的确切数据。va_arg应该指出的数据是不同的。
我不认为这是一个不可接受的问题,因为integre value运行良好。问题只是双值问题。
有人能在这个问题上帮我吗?
发布于 2012-10-11 22:10:08
您应该将其格式化/打印为双倍,因为对于各种函数,浮点数被加宽到双倍。
以下ARM体系结构状态的过程调用标准
5.5参数传递 变量函数总是按照基本标准进行封送。 7.2通过辩论的公约 对于变量函数,与省略号(…)匹配的浮点参数转换为“双”类型。
Afaik 7.2一般适用C。
https://stackoverflow.com/questions/12852360
复制