0

以下のコードで「invalid operands to binary ==」エラーが発生した理由を誰かに説明してもらえますか?

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)です。この 2 つのタイプは比較できません。

代わりに、次を使用できます。

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