0

私は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*

しかし、dlinkNodeを新しい型として定義したいので、これはtypedefの目的に違反しているようです。どんな助けでもいいでしょう。

ありがとうございました!

4

2 に答える 2

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;
于 2013-01-26T04:39:11.410 に答える
1

に変更します

typedef struct dlinkNode_t {
    struct dlinkNode_t *next;
    struct dlinkNode_t *prev;
    void *value;
} dlinkNode_t;
于 2013-01-26T04:42:04.140 に答える