【发布时间】:2017-04-23 15:36:54
【问题描述】:
为什么在将匿名函数分配给指向结构中函数字段的指针时会收到此警告?
这是我的结构:
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。我做错了什么?
【问题讨论】:
-
您将值 0 或 1 分配给函数指针,而不是应有的函数指针。
-
list->hasNext = (int (*)(void)) (list->current==list->tail? 0:1);这行应该做什么?这没有任何意义。为什么要将函数指针设置为值 1?
标签: c casting function-pointers