我正在尝试使用#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)