错误使用时typedef结构“类型‘X *’的‘X *’不能被分配给类型的实体值”(Error &#

2019-07-23 00:01发布

下面是我使用的节点结构...

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: a value of type "Node *" cannot be assigned to an entity of type "Node *"

任何人都可以解释正确的方式做到这一点? Visual Studio将编译并运行它发现,它也适用于我的MAC,但崩溃在我的学校服务器。

编辑:我想用的memcpy的,但是这是相当cheasy

Answer 1:

我认为这个问题是不存在结构称为节点,只有一个typedef。 尝试

 typedef struct Node { ....


Answer 2:

类似迪普的答案,但一个版本,可以让你的代码编译。 你的结构更改为以下:

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


Answer 3:

定义typedefstruct在C的最好之前完成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;
};


文章来源: Error 'a value of type “X *” cannot be assigned to an entity of type “X *”' when using typedef struct