将 int 与 double 进行比较的预处理器"invalid integer constant expression"



在我的代码中的某个地方,我有预处理定义

#define ZOOM_FACTOR 1

在另一个地方我有

#ifdef ZOOM_FACTOR
#if (ZOOM_FACTOR == 1)
#define FONT_SIZE 8
#else
#define FONT_SIZE 12
#endif
#else
#define FONT_SIZE 8
#endif

问题是当我将ZOOM_FACTOR值更改为floating point值时,例如1.5,我会收到编译错误C1017: invalid integer constant expression

有人知道为什么我会遇到此错误,并且有什么方法可以在预处理器指令中进行integerfloating point number进行比较?

错误是因为该语言不允许。

根据C 标准, [cpp.cond]/1

控制条件包含的表达式应为整体常数表达。

而不是将ZOOM_FACTOR定义为浮点值1.5,为什么不将其定义为此类值的倍数。例如,用诸如 2之类的常数乘,然后进行比较。

最新更新