从C中的不兼容指针类型警告返回

时间:2013-01-26 04:34:36

标签: c linked-list

我不是很熟悉C,当我尝试使用C来构建链表时,我遇到了一个小问题,希望有人为我澄清一下。

到目前为止,这是我的代码:

typedef struct {
struct dlinkNode_t *next;
struct dlinkNode_t *prev;
void *value;
} dlinkNode_t;

dlinkNode_t* getNext(dlinkNode_t *ptr){
/**return the next node of the node pointed by ptr. Return NULL if next element*/
return ptr->next;

当我尝试编译它时,我收到以下警告:

"warning: return from incompatible pointer type"

我将dlinkNode_t定义为链接列表节点的类型,每个节点有2个指向前后的指针。我应该将getNext的返回类型定义为:

struct dlinkNode_t*

但这似乎违反了typedef的目的,因为我想将dlinkNode定义为新类型。任何帮助都会很好。

谢谢!

2 个答案:

答案 0 :(得分:3)

希望这会有所帮助.. struct当你在其中使用相同的struct指针时必须有名字....

typedef struct dlinkNode {
struct dlinkNode *next;
struct dlinkNode *prev;
void *value;
} dlinkNode_t;

dlinkNode_t* getNext(dlinkNode_t *ptr){
/**return the next node of the node pointed by ptr. Return NULL if next element*/
return ptr->next;

答案 1 :(得分:1)

将其更改为

typedef struct dlinkNode_t {
    struct dlinkNode_t *next;
    struct dlinkNode_t *prev;
    void *value;
} dlinkNode_t;