这是我用于节点的结构......
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,但这很可笑
答案 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;
};