有人可以向我解释为什么下面的代码得到“无效操作数到二进制==”错误?
typedef int (*func_t)(int);
#define NO_FUNC ((func_t) 0)
struct {
const char *name;
func_t func;
} table[] = { {"func1", NO_FUNC} };
if (table[0] == NO_FUNC) { // invalid operands to binary ==
}
答案 0 :(得分:3)
你应该在结构中引用正确的成员:
if (table[0].func == NO_FUNC)
答案 1 :(得分:2)
table[0]
属于未命名的struct
类型,NO_FUNC
的类型为int (*)(int)
。这两种类型无法比较。
相反,您可以使用:
if (table[0].func == NO_FUNC)