[英]Weird/Simple C error
我刚刚开始尝试学习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;
}
在使用mult
之前尚未声明它,因此编译器为您隐式将其声明为int mult()
。 然后,编译器会找到您的定义,但定义不匹配。
尝试在main()
之前添加一个原型:
double mult(double, double);
或者只是在main()
之前定义它。
有几个问题,一个是您试图在声明之前使用mult
,一个解决方法是在main
之前转发声明mult
,如下所示:
double mult(double x, double y) ;
或只是在main
之前定义mult
,否则C pre- C99将像int mult()
那样隐式定义mult
而在Keith指出的C99中,这是违反约束的。 最新的clang
版本会警告您:
函数“ mult”的隐式声明在C99中无效
而gcc
只会警告您它是隐式声明的,这就是为什么您会收到类型冲突的原因。 您还尝试在此处仅用一个参数调用mult
:
answer = mult(number1);
但它定义为带有两个参数。 最后,您使用number1
而不初始化它,这意味着它将具有不确定的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.