stm32H743编译器关于浮点类型强制转换传参的bug

局部函数,正常传参

当测试函数作为局部函数和main函数写在同一个文件中时,参数可以正常传递。函数参数和形参都为3.14

float value = 0.0;
void float_test(float _v)
{
    value = _v;
}


int main(void)
{
    float_test(3.14f);
    while(1);
}

keil仿真截图,形参正常

全局函数,异常传参

当测试函数放到另一个文件中,在main函数中进行调用时,会发生异常参数,函数形参转换出错

test.c

float value = 0.0;
void float_test(float _v)
{
    value = _v;
}

main.c

int main(void)
{
    float_test(3.14f);
    while(1);
}

keil仿真截图,形参出错,变为了一个极小值,可能是数据对齐有问题

原因分析

可能是编译器在保存单精度浮点参数时还是按double类型,读取参数时确按float类型来进行读取,所以出现了错误

解决方案

浮点数传参不要使用float类型,采用默认的double类型进行传参,就可以正常传参了

相关推荐

  1. C语言例3-38强制类型转换例子

    2023-12-29 11:26:10       45 阅读
  2. 关于gson解析把int类型转成问题

    2023-12-29 11:26:10       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 11:26:10       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 11:26:10       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 11:26:10       82 阅读
  4. Python语言-面向对象

    2023-12-29 11:26:10       91 阅读

热门阅读

  1. 2.5 C语言之类型转换

    2023-12-29 11:26:10       48 阅读
  2. 【QT】qt的智能指针

    2023-12-29 11:26:10       50 阅读
  3. 骑砍战团MOD开发(26)-系统定制UI资源替换

    2023-12-29 11:26:10       60 阅读
  4. 面试记录(被问倒的)

    2023-12-29 11:26:10       53 阅读
  5. FormData传送复杂数据

    2023-12-29 11:26:10       52 阅读
  6. wpf ComboBox绑定数据及变更事件

    2023-12-29 11:26:10       53 阅读