繁体   English   中英

奇怪/简单的C错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM