【问题标题】:Preprocessor "invalid integer constant expression" comparing int to double将 int 与 double 进行比较的预处理器“无效的整数常量表达式”
【发布时间】:2019-10-02 07:41:53
【问题描述】:

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

#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++ preprocessor


【解决方案1】:

错误是因为语言不允许。

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

控制条件包含的表达式应该是一个整型常量表达式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 2012-10-29
    • 2011-06-30
    • 2020-07-29
    • 2022-11-28
    • 2021-08-21
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多