与链表冲突的类型

Conflicting types with linked lists

我正在用 C 创建一个程序,我不确定是什么导致了错误,因为我对 C 编程还比较陌生(指针很可怕)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Node {

   char firstName[100];
   char lastName[100];
   char email[100];
   struct Node * partner;

};

struct Node* head;

void main(void)
{
    GetNewNode("John", "Smith", "john.smith@hotmail.com");

}

struct Node * GetNewNode(char fN[100], char lN[100], char em[100]) {

   struct Node* newNode = (struct Node *)malloc(sizeof(struct Node));

   strcpy(newNode->firstName, fN);
   strcpy(newNode->lastName, lN);
   strcpy(newNode->email, em);

};

我似乎得到了错误:

error: conflicting types for 'GetNewNode'

只是寻求一些帮助来澄清发生了什么。谢谢!

您需要为GetNewNode()添加一个declaration/prototype或在main()之前定义它。

在您的代码中,您没有为 GetNewNode() 提供原型。当编译器到达行

GetNewNode("John", "Smith", "john.smith@hotmail.com");

它不知道 GetNewNode() 的签名,并假定它是 returns int。因此,错误 intstruct Node * 指针是不兼容的类型。

在声明之前添加一个原型 main:

struct Node * GetNewNode(char fN[100], char lN[100], char em[100]);

或将整个GetNewNode函数移动到main之前。