0

有人可以向我解释为什么下面的代码会出现“二进制操作数无效==”错误吗?

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 ==

}
4

2 回答 2

3

你应该在结构中引用正确的成员:

if (table[0].func == NO_FUNC)
于 2012-10-13T01:18:47.507 回答
2

table[0]是一个未命名的struct类型,并且NO_FUNC类型为int (*)(int). 这两种类型不能相提并论。

相反,您可以使用:

if (table[0].func == NO_FUNC)
于 2012-10-13T01:22:20.483 回答