【问题标题】:Conflicting types with linked lists与链表冲突的类型
【发布时间】:2015-11-10 22:46:08
【问题描述】:

我正在用 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 未声明,或者已隐式声明?
  • 实际上是的。 "警告:函数'GetNewNode'的隐式声明
  • return 是你的朋友。

标签: c pointers linked-list ansi-c


【解决方案1】:

您需要为GetNewNode() 添加声明/原型或在main() 之前定义它。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    或者将GetNewNode函数完全移到main之前。

    【讨论】:

    • 哇,我不敢相信我错过了这么简单的事情。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2013-10-19
    • 2019-11-19
    • 2013-08-04
    相关资源
    最近更新 更多