C -回读浮点数



我使用微芯片c18,我有这个函数,它将浮点数分割为4个相应的字节。C18跟在小端尾

后面
a[0]=*(fptr);        address 0
a[1]=*(fptr+1);              1  
a[2]=*(fptr+2);              2    
a[3]=*(fptr+3);              3 

写入到串行eeprom。

如果我想回读float变量

float read_float(void)
{   float f;
    unsigned char *fptr;
    fptr=&f;
    *(fptr)=eepromread(0);
    *(fptr+1)=eepromread(1);
    *(fptr+2)=eepromread(2);
    *(fptr+3)=eepromread(3);      
    return(f);       
}

这个函数会返回浮点变量吗?我现在没有任何硬件和模拟工具。

我相信我的问题已经说清楚了。编辑:

当这样做时。一个编译器不匹配的错误发生在分配char浮点..我怎么能消除错误?

最干净的方法是*(char*)(fptr+ i ) = eepromread( i );。您需要初始指针的偏移量,转换为指向字符的指针,解引用。

而且,至少我的编译器(gcc)在第一次赋值时犹豫不决。您需要更像fptr = (char*)(&f);的东西,以便指向浮点数的指针与赋值兼容。

但是,请仔细检查,以确保eepromread()按照您期望的顺序提供字节。他们应该这样做,因为IEEE754是独立于字节排序的,但是隐藏在嵌入式C库中的"聪明的增强"的数量可以填满一本相当大的书。

相关内容

  • 没有找到相关文章

最新更新