预处理器将 int 和 double 进行比较会出现 "invalid integer constant expression" 错误

7

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

#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的值改为浮点数(例如1.5)后,会出现编译错误C1017: invalid integer constant expression
有人知道为什么会出现这个错误吗?是否有办法在预处理指令中比较整数浮点数

尝试使用“大于”,“大于等于”,“小于”或“小于等于”的比较。 - Alexander
1个回答

5
错误是因为语言不允许这样做。根据C++标准,[cpp.cond]/1

控制条件包含的表达式必须是一个整数常量表达式。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接