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

在 C 中定义typedefofstruct最好在struct声明本身之前完成。

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 回答
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 回答