C程序错误:getname的类型冲突

C程序错误:getname的类型冲突,c,C,我被困在这段代码中,因为它不断产生错误。我是从学校笔记上抄的,所以应该没有错。但它无法执行 这是我的密码: 以下是错误消息: 编译main时,编译器没有看到稍后定义的getname函数。编译器假定该函数没有任何参数,并且返回类型为int。然而,当编译器最终到达getname函数时,它意识到getname的实际返回值类型在您的case struct nameTag中是不同的 此解决方案可通过两个选项完成: A.将getname函数体放在第一次引用它的main之上。在这种情况下,当编译器到达main

我被困在这段代码中,因为它不断产生错误。我是从学校笔记上抄的,所以应该没有错。但它无法执行

这是我的密码:

以下是错误消息:

编译main时,编译器没有看到稍后定义的getname函数。编译器假定该函数没有任何参数,并且返回类型为int。然而,当编译器最终到达getname函数时,它意识到getname的实际返回值类型在您的case struct nameTag中是不同的

此解决方案可通过两个选项完成:

A.将getname函数体放在第一次引用它的main之上。在这种情况下,当编译器到达main时,它将已经知道getname函数的正确参数和返回类型

struct nameTag { char fname[20]; char Iname[20]; };

struct nameTag getname() // Defined before first use
{
     // Body of getname() function
}

main()
{
     // body of your main() function
}
B.在main中首次引用getname函数之前声明它,以告诉编译器它以某种方式存在于某个地方:

struct nameTag { char fname[20]; char Iname[20]; };
struct nameTag getname(); // Function declaration, pay attention to ';' at end and no body
main()
{
     // body of your main() function
}

struct nameTag getname()
{
     // Body of getname() function
}
附注:
对于我来说,本地模块功能首选选项A,但在某些情况下,如果需要,例如,在两个或多个功能之间相互参考的情况下,则首选选项B。此外,选项B用于头文件.h文件,因为它们根本不包含函数体,只包含声明。

请查看。不要发布代码截图的链接,而是将代码包含在问题的正文中。getname也是一个API函数,请为它指定一个不同的名称。问题的根源是警告隐式声明。。。。考虑警告隐含声明…总是错误。将getname函数放在main之前。