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

时间:2019-05-15 08:20:45

标签: c++ preprocessor

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

#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进行比较吗?

1 个答案:

答案 0 :(得分:4)

错误是因为语言不允许。

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

  

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

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