我刚开始尝试学习C并且有一个非常基本的问题。下面列出的代码从mult函数输出一个错误,指出存在'mult'的冲突类型
我看不出有任何冲突的类型。如果我要将这些值的数据类型替换为int,那么我没有任何问题。我假设我错过了很简单的东西。有什么帮助吗?
#include <stdio.h>
int main()
{
double number1;
double answer;
answer = mult(number1);
getchar();
return 0;
}
double mult(double x, double y)
{
return x * y;
}
答案 0 :(得分:3)
在您使用之前,您尚未声明mult
,因此编译器会隐式将其声明为int mult()
。然后编译器找到你的定义并且它不匹配。
尝试在main()
之前添加原型:
double mult(double, double);
或者只是在main()
之前定义它。
答案 1 :(得分:2)
有一些问题,一个是你在宣布之前尝试使用mult
,一个解决方法就是在mult
之前转发声明main
,如下所示:
double mult(double x, double y) ;
或仅在mult
之前定义main
,否则 C pre- C99 将隐式定义mult
,如此{{1}和 C99 一样,Keith指出它是一个约束违规。 int mult()
的最新版本会警告您:
函数'mult'的隐式声明在C99中无效
和clang
会警告你它被隐式声明,这就是你收到类型冲突的原因。您还尝试在此处仅使用一个参数调用gcc
:
mult
但它被定义为采用两个参数。最后,您使用answer = mult(number1);
而不初始化它,这意味着它将具有不确定的值。