下面是我使用的节点结构...
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
我认为这个问题是不存在结构称为节点,只有一个typedef。 尝试
typedef struct Node { ....
类似迪普的答案,但一个版本,可以让你的代码编译。 你的结构更改为以下:
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;
}
定义typedef
的struct
在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