预处理器 "invalid integer constant expression" 比较 int 和 double

Preprocessor "invalid integer constant expression" comparing int to double

在我的代码中的某处,我有预处理器定义

#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:

The expression that controls conditional inclusion shall be an integral constant expression.

与其将 ZOOM_FACTOR 定义为浮点值 1.5,不如将其定义为该值的倍数。例如,乘以 2 等常数,然后进行比较。