pkuzhx 发表于 2017-11-6 16:36:20

ADK中int转float出错!

发现在ADK中int类型赋值给float会出错:
int main(void)
{
    int a = 5;
    float b = a;
    b = 0;
    return 0;
}报错:
main.c: In function `main':
main.c:18: fatal error: Attempt to compile floating point code without -float
compilation terminated.
make: *** Error 1
Finished.强制转换同样会报错:
int main(void)
{
    int a = 5;
    float b = (float)(a);
    b = 0;
    return 0;
}
报错内容完全一样,就不贴了。
同样把int赋值给float也报错:
int main(void)
{
    int a = 5;
    float b = 1.32;
    a = b;
    return 0;
}


但如果float和int分别运算,是可以的:
int main(void)
{
    int a = 5;
    float b = 1.32;
    a++;   
    b = 0.3;
    return 0;
}编译通过。
哪位大神知道如何设置这个诡异的问题啊。看报错提示,应该是在编译条件中增加-float。但是:
(1)不知道往哪儿加
(2)float直接和float运算是可以的,说明系统已经支持float运算了啊

pkuzhx 发表于 2018-1-25 16:45:32

有大神吗   

yaoxx 发表于 2018-2-1 08:25:12

我只知道float的存储格式是特殊的

hhyytt 发表于 2018-2-1 11:31:16

定点浮点吧,其实是模拟的软浮点。

pkuzhx 发表于 2018-2-1 11:37:40

hhyytt 发表于 2018-2-1 11:31
定点浮点吧,其实是模拟的软浮点。

不太明白你的意思。
VM部分应该是基于ARM的吧,ARM里这么做完全没问题,这里就出错了。
DSP是定点的。

hhyytt 发表于 2018-2-1 12:26:29

pkuzhx 发表于 2018-2-1 11:37
不太明白你的意思。
VM部分应该是基于ARM的吧,ARM里这么做完全没问题,这里就出错了。
DSP是定点的。

编译器软浮点,可能有问题。

tzf520 发表于 2018-2-1 13:33:12

编译器的问题,语法上来说是没有问题的。
页: [1]
查看完整版本: ADK中int转float出错!