相关疑难解决方法(0)

为什么C预处理器将枚举值视为相等?

为什么std::cout以下代码中的行仍然运行A并且B不同?

#include <iostream>

enum T { A = 1, B = 2 };
// #define A 1
// #define B 2

int main() {
#if (A == B)
    std::cout << A << B;
#endif
}
Run Code Online (Sandbox Code Playgroud)

如果我使用#define(如注释掉),我没有得到任何输出,如我所料.

问题的原因:

我希望有一个模式选择器用于某些测试代码,我可以通过在顶部注释/取消注释行来轻松更改模式:

enum T { MODE_RGB = 1, MODE_GREY = 2, MODE_CMYK = 3 };
// #define MODE MODE_RGB
#define MODE MODE_GREY
// #define MODE MODE_CMYK

int main() {
#if (MODE == MODE_RGB)
    // do RGB …
Run Code Online (Sandbox Code Playgroud)

c++ c-preprocessor

61
推荐指数
6
解决办法
8272
查看次数

标签 统计

c++ ×1

c-preprocessor ×1