Я пытаюсь проверить с помощью #if, что макрос и перечисление равны или нет. проверка не проходит, даже если оба имеют одинаковое значение. почему?
Создан макрос с использованием #define NUMBER 2. Создан enum, включающий одну запись со значением 2. Сравнил оба с использованием #if. сравниваемый макрос со значением 2 передается. но сравнивать макрос с enum не удается.
#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");
}
Я ожидал PASS для всех трех случаев.
Фактический результат:
NUMBER: 2 and two: 2
#1--------FAIL
#2-------PASS
#3-------PASS