工具/软件:TI C/C++编译器
将 C6000_8.3.3用作编译器时、在 Log_printf2中打印浮点值时遇到问题。 如果第一个值不是浮点值、而第二个值是浮点值、则以下调用:
log_printf2 (trace_buffer、"int1 =%d、 Float2 =%f"、integer var、float_var);
生成此输出: " int1 = 112、 Float2 =-0.000002"
如果第一个参数是 float、则浮点值打印正确、但第二个参数打印为随机值(不过值相同)。 因此、它看起来像是存储器中浮点数大小的问题。
在模块 xdc.runtime.Log 的说明中、说明指出:
%f 格式说明符用于打印单精度浮点值。 请注意 、%f 假定 sizeof (Float)<= sizeof (IArg)。 大多数解释浮点值的客户端都希望它们以 IEEE 754浮点格式表示。 因此、在 目标默认不生成 IEEE 754浮点格式的浮点值的情况下、建议在向日志函数提供值之前将浮点值转换为该格式。
因此我试图这样做
log_printf2 (trace_buffer、"Float1 =%f、Float2 =%f"、floatToArg(111.222)、floatToArg(333.444);
这导致:
Float1 = 1442225909949672213745117187500000000000000000000000000000000000000000000000000000000000000000000 0000.000000、Float2 =-0.000002
所以 floatToArg 不能解决这个问题——它使它变得更糟…
有人能提供帮助吗?