为什么在将匿名函数指定给结构中的函数字段指针时会收到此警告?
以下是我的结构:
typedef struct list_node_t {...} ListNode;
typedef struct list_t {
ListNode* head;
ListNode* current;
...
//pointer to function fields
int (*hasNext)();
...
}List;
在这里,我为hasNext分配了一个匿名函数。它会引发警告。
List* makeNewList( ){
List* list = (List*)malloc(sizeof(List));
list->head = list->tail = NULL;
list->current = list->head;
list->hasNext = (int (*)(void)) (list->current==list->tail? 0:1);
return list;
}
用gcc -c -Wall list.c编译回复此消息:
list.c: In function ‘makeNewList’:
list.c:35:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
list->hasNext = (int (*)(void)) (list->current==list->tail? 0:1);
为什么呢?我希望list-> hasNext是一个返回int的函数的指针,而不是标量int。我做错了什么?