使用typedef结构时,错误'类型为“X *”的值无法分配给“X *”类型的实体

时间:2013-03-24 05:17:14

标签: c struct compiler-errors typedef

这是我用于节点的结构......

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;
}

现在,visual studio正在给我这些行上的intellisense(less)错误

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

任何人都可以解释这样做的正确方法吗? Visual Studio将对其进行编译并运行它查找,它也可以在我的Mac上运行,但在我的学校服务器上崩溃。

编辑:我想过使用memcpy,但这很可笑

3 个答案:

答案 0 :(得分:5)

我认为问题是没有名为Node的 struct ,只有一个typedef。尝试

 typedef struct Node { ....

答案 1 :(得分: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;
}

答案 2 :(得分:1)

在C中定义typedef struct最好在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;
};