我正在为嵌入式系统编写代码,需要用C90和Misra C 2012编写。因此,我不允许使用基本的C数值类型。
我知道对于32位系统,以下代码有效。
typedef float float32_t;
typedef double double64_t;
typedef long double double128_t;
但我想知道我们是否可以编写if的便携版本。对于C99,我们在FLT_EVAL_METHOD
中有一个宏math.h
,它告诉我们float
,double
和long double
的大小。
我想知道如何在C90兼容系统可移植的同时实现这一点。
答案 0 :(得分:0)
MISRA C:2012指令4.6建议使用表示大小和签名的typedef ......
注意:stdint.h没有为浮动类型定义“表示大小和签名的typedef”,尽管该示例建议您应该定义它们。
就个人而言,虽然我理解整数类型的基本原理,但我没有看到float32_t / float64_t / float128_t优于float / double / etc的好处,因为浮点的详细内容都是实现定义的,因此可移植性是神的问题!
[见免责声明简介]