局部函數(shù),正常傳參
當(dāng)測(cè)試函數(shù)作為局部函數(shù)和main函數(shù)寫(xiě)在同一個(gè)文件中時(shí),參數(shù)可以正常傳遞。函數(shù)參數(shù)和形參都為3.14
float value = 0.0;
void float_test(float _v)
{
value = _v;
}
int main(void)
{
float_test(3.14f);
while(1);
}
keil仿真截圖,形參正常
全局函數(shù),異常傳參
當(dāng)測(cè)試函數(shù)放到另一個(gè)文件中,在main函數(shù)中進(jìn)行調(diào)用時(shí),會(huì)發(fā)生異常參數(shù),函數(shù)形參轉(zhuǎn)換出錯(cuò)
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仿真截圖,形參出錯(cuò),變?yōu)榱艘粋€(gè)極小值,可能是數(shù)據(jù)對(duì)齊有問(wèn)題
原因分析
可能是編譯器在保存單精度浮點(diǎn)參數(shù)時(shí)還是按double類(lèi)型,讀取參數(shù)時(shí)確按float類(lèi)型來(lái)進(jìn)行讀取,所以出現(xiàn)了錯(cuò)誤文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-776455.html
解決方案
浮點(diǎn)數(shù)傳參不要使用float類(lèi)型,采用默認(rèn)的double類(lèi)型進(jìn)行傳參,就可以正常傳參了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-776455.html
到了這里,關(guān)于stm32H743編譯器關(guān)于浮點(diǎn)類(lèi)型強(qiáng)制轉(zhuǎn)換傳參的bug的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!