在为函数指定指针时,从不同大小的整数警告转换为指针

时间:2016-12-08 11:45:14

标签: c casting function-pointers

为什么在将匿名函数指定给结构中的函数字段指针时会收到此警告?

以下是我的结构:

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 个答案:

没有答案