4

これがノードに使用している構造体です...

typedef struct
{
    struct Node* next;
    struct Node* previous;
    void* data;
} Node;

そして、ここに私がそれらをリンクするために使用している関数があります

void linkNodes(Node* first, Node* second)
{
    if (first != NULL)
        first->next = second;

    if (second != NULL)
        second->previous = first;
}

現在、ビジュアルスタジオはこれらの行でインテリセンス(少ない)エラーを出しています

IntelliSense: a value of type "Node *" cannot be assigned to an entity of type "Node *"

誰かがこれを行う適切な方法を説明できますか? Visual Studio はそれをコンパイルして実行し、私の Mac でも動作しますが、私の学校のサーバーではクラッシュします。

編集:memcpyを使用することを考えましたが、それはかなり安っぽいです

4

3 に答える 3

5

問題は、Nodeという構造体がなく、typedefしかないことだと思います。試す

 typedef struct Node { ....
于 2013-03-24T05:22:14.717 に答える
1

Deepuの回答に似ていますが、コードをコンパイルできるバージョンです。構造体を次のように変更します。

typedef struct Node // <-- add "Node"
{
    struct Node* next;
    struct Node* previous;
    void* data;
}Node; // <-- Optional

void linkNodes(Node* first, Node* second)
{    
    if (first != NULL)
        first->next = second;

    if (second != NULL)
        second->previous = first;
}
于 2013-03-24T05:23:20.700 に答える
1

C での定義typedefは、宣言自体の前に行うのが最適です。structstruct

typedef struct Node Node; // forward declaration of struct and typedef

struct Node
{
    Node* next;          // here you only need to use the typedef, now
    Node* previous;
    void* data;
};
于 2013-03-24T08:16:39.003 に答える