Floating point 使用printf打印浮点值时发生访问冲突

Floating point 使用printf打印浮点值时发生访问冲突,floating-point,embedded,vxworks,Floating Point,Embedded,Vxworks,当我尝试运行以下行时,我遇到运行时访问冲突: float x; x = 29.600; printf("%f", x); 这是CPP项目中的*.C文件,运行在内核空间中。 操作系统是vxworks 6.7 另一方面,整数值可以很好地打印出来。 另外,如果可能有帮助的话,在整个应用程序初始化期间,浮点值只打印一次。 任务具有浮点支持,所以这也不应该成为问题。 同一段代码在windows平台/MVCE上运行良好 由于没有MVCE或明显正确的C代码,因此在关闭前未进行注释: 这个问题是关于嵌入式系统

当我尝试运行以下行时,我遇到运行时访问冲突:

float x;
x = 29.600;
printf("%f", x);
这是CPP项目中的
*.C
文件,运行在内核空间中。 操作系统是vxworks 6.7

另一方面,整数值可以很好地打印出来。 另外,如果可能有帮助的话,在整个应用程序初始化期间,浮点值只打印一次。 任务具有浮点支持,所以这也不应该成为问题。 同一段代码在windows平台/MVCE上运行良好

由于没有MVCE或明显正确的C代码,因此在关闭前未进行注释:

这个问题是关于嵌入式系统上的内核模式的。MVCE至少应该包含内核代码和所有内核开发环境引用。 此外,在内核开发中,由于内核对性能改进的限制,一些完全正确的代码在上下文中出现中断也并不令人惊讶。

这对我来说很有效:


在内核配置(project explorer)中,windriver workbench显式提供了添加对浮点数学的支持的选项,这解决了整个问题。

您只显示了一段应该可以工作的代码。请尝试提供一个最小的完整的可验证示例。正如目前所写,您的问题是离题的。我怀疑您在其他代码中有未定义的行为。这可能是某个不支持打印浮点数的嵌入式系统吗?特别是在内核空间?你说的是“内核空间”。我在很多内核中工作过,我只能回忆起一个允许浮点运算的内核。这使得上下文切换非常昂贵,内核通常不需要浮点运算。“另外,这是给出问题的一行,如果你阅读了整个问题,整数值运行良好,因此其余代码不应该是问题。”这是从你的前提得出的无效结论。