比较编译时类型的大小

Compare size of types at compile time

本文关键字:类型 编译 比较      更新时间:2023-10-16

我正在处理一些需要64位浮点计算的代码,但是在某些部署的平台上,没有64位浮点类型。
我有一个使用软件模拟64位类型的代码版本,但是我希望能够将硬件和软版本组合为单个,包括硬件和软件浮点之间的开关类型定义。
浮点和双都可以使用,但是在一个平台上,它们的大小为4个字节,另一个是4个字节。

。 。

我知道我不能在预处理器宏中使用sizeof(),因此我考虑比较两者的最大值,但是在Arduino Framework中,FLT_MAXDBL_MAX似乎没有定义?

如何在编译时间执行此支票?

这是针对C的,但也可能适用于C 。

这个想法是针对其DBL_*弟兄测试一个或多个FLT_*宏。如果它们是相同的,那么您可能会在无法区分float32和float64的系统上。那

#include <float.h> /* or <cfloat>?  */
#if FLT_MANT_DIG == DBL_MANT_DIG
  /* Funny system */
#else
  /* Sane system */
#endif

检查您的float.h内容是否合适。