我有一个枚举、一个宏定义和一个都使用枚举的方法。我无法编译它。考虑以下代码。
typedef enum fruits_t
{
APPLE,
ORANGE,
BANANA
} fruits_t;
#define KEY_TO_VALUE(x) ((x == APPLE) ? 0 : \
(x == ORANGE) ? 1 : \
(x == BANANA) ? 2 : \
"Undefined")
static void foo(char fruit) {
if (fruit == KEY_TO_VALUE(APPLE)) {
/* do something */
}
}
这可以编译,但我收到以下警告。
warning: pointer/integer type mismatch in conditional expression
warning: comparison between pointer and integer
为什么?我对 C 很陌生,所以如果你能解释一些对有经验的 C 开发人员来说似乎很明显的事情,我将不胜感激。我的大部分编程知识都是基于 Java 的。