预处理器“无效的整数常量表达式”将int与double进行比较

ars*_*ver 6 c++ preprocessor

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

#define ZOOM_FACTOR 1
Run Code Online (Sandbox Code Playgroud)

在另一个地方,我有

#ifdef ZOOM_FACTOR
#if (ZOOM_FACTOR == 1)
#define FONT_SIZE 8
#else
#define FONT_SIZE 12
#endif
#else
#define FONT_SIZE 8
#endif
Run Code Online (Sandbox Code Playgroud)

问题是当我将ZOOM_FACTORvalue 更改为floating pointvalue时,例如1.5,我遇到了编译错误C1017: invalid integer constant expression

有谁知道为什么我收到这个错误,有没有什么办法之间做出比较integerfloating point number预处理指令内?

P.W*_*P.W 5

错误是因为语言不允许。

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

控制条件包含的表达式应为整型常量表达式。

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