小编Jop*_*mas的帖子

为什么我不能使用#if比较宏和枚举?

我正在尝试使用#if检查宏和枚举是否相等。即使两者的值相同,检查也会失败。为什么?

使用#define NUMBER 2创建了一个宏。创建了一个包含值2的条目的枚举。使用#if比较了两者。比较宏与2通过。但是将宏与枚举进行比较失败。

#include <stdio.h>
#define NUMBER 2
enum numbers
{
    zero = 0, 
    one, 
    two, 
    three
};

int main ()
{
    printf("NUMBER: %x and two: %x\n", NUMBER, two);

#if NUMBER == two
    printf("#1-------PASS\n");
#else
    printf("#1--------FAIL\n");
#endif

#if NUMBER == 2
    printf("#2-------PASS\n");
#else
    printf("#2--------FAIL\n");
#endif

    if (NUMBER == two)
        printf("#3-------PASS\n");
    else
        printf("#3--------FAIL\n");
}
Run Code Online (Sandbox Code Playgroud)

我期望这三种情况都能通过。实际结果:

NUMBER: 2 and two: 2
#1--------FAIL
#2-------PASS
#3-------PASS
Run Code Online (Sandbox Code Playgroud)

c macros enums preprocessor

3
推荐指数
1
解决办法
88
查看次数

标签 统计

c ×1

enums ×1

macros ×1

preprocessor ×1