我在 PIC32MX 系列微处理器上使用 HiTech PICC32,但我认为这个问题对于任何熟悉 C 语言的人来说已经足够普遍了。(这几乎等同于 C90,sizeof(int) = sizeof(long) = sizeof(float ) = 4.)
假设我读取了一个 4 字节的数据字,它代表float
. 我可以使用以下方法快速将其转换为实际的浮点值:
#define FLOAT_FROM_WORD(WORD_VALUE) (*((float*) &(WORD_VALUE)))
但这仅适用于左值。例如,我不能在函数返回值上使用它,例如:
FLOAT_FROM_WORD(eeprom_read_word(addr));
是否有一种简短而甜蜜的方式来内联,即没有函数调用或临时变量?老实说,我没有理由避免函数调用或额外的 var,但这让我很烦恼。一定有我想念的方法。
补充:我没有意识到这WORD
实际上是一个常见的 typedef。我更改了宏参数的名称以避免混淆。