预处理器 "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
。
有谁知道为什么我会收到此错误消息,有什么方法可以在预处理器指令中对 integer
和 floating point number
进行比较吗?
错误是因为语言不允许。
根据 C++ 标准,[cpp.cond]/1
:
The expression that controls conditional inclusion shall be an integral constant expression.
与其将 ZOOM_FACTOR
定义为浮点值 1.5
,不如将其定义为该值的倍数。例如,乘以 2
等常数,然后进行比较。
在我的代码中的某处,我有预处理器定义
#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
。
有谁知道为什么我会收到此错误消息,有什么方法可以在预处理器指令中对 integer
和 floating point number
进行比较吗?
错误是因为语言不允许。
根据 C++ 标准,[cpp.cond]/1
:
The expression that controls conditional inclusion shall be an integral constant expression.
与其将 ZOOM_FACTOR
定义为浮点值 1.5
,不如将其定义为该值的倍数。例如,乘以 2
等常数,然后进行比较。