我正在尝试调试代码中的以下错误:
#define MAX_PATTERNS 10
typedef struct _kv {
char* key;
char* val;
} KV;
void compile(char* pattern)
{
KV patterns[MAX_PATTERNS] = {NULL,};
for (int idx=0; idx < MAX_PATTERNS; idx++) {
KV item = patterns[idx];
printf("%d", item == 0);
}
}
我收到以下错误:
test.c:107:27: error: invalid operands to binary expression ('KV' (aka 'struct _kv') and 'int')
printf("%d", item == 0);
~~~~ ^ ~
error generated.
我在这里做错了什么?我认为我可以使用 apatterns[idx] == NULL来测试何时可以退出循环(因为我将数组初始化为全零),但我似乎在某些事情上错了。我应该检查一下patterns[idx].key是否是这样NULL吗?
我想检查整个结构是否为零的一种(丑陋)方法是:
printf ("Null? %s\n",
(int) (void*) patterns[0].key + (int) (void*) patterns[0].val == 0? "true" : "false");