【问题标题】:error C2371: 'functionname' redefinition: different basic types错误 C2371:“函数名”重新定义:不同的基本类型
【发布时间】:2013-11-21 20:45:08
【问题描述】:

我有一个问题。我使用 Visual Studio 2013 并收到以下错误:

Error C2371: 'getgrundflaeche' redefinition: different basic types.

我不知道为什么会出现此错误。当我尝试调用函数getgrundflaeche() 时,VS12 出现同样的错误。

代码如下:

#include <stdio.h>
#define PI 3.14159265359

int main(void){
    double h = 0, d = 0, r = 0, G = 0, V = 0, M = 0, O = 0;

    printf("Geometrie Zylinder:\nBitte geben sie den Durchmesser d ein (cm): ");
    scanf_s("%lf", &d);
    printf("Bitte geben sie die Höhe h ein (cm): ");
    scanf_s("%lf", &h);
    r = d / 2;

    G = getgrundflaeche(r);
    /*V = get_volumen(r, h);
    M = get_mantelflaeche(d, h);
    O = get_oberflaeche(M, G); */

    system("CLS");

    printf("Eingaben:\nDurchmesser d: %lf cm\nHöhe h: %lf cm", d, h);
    system("PAUSE");

    return 0;
}

double getgrundflaeche(double r){
    return (r*r);
}
/*
double get_volumen(double r, double h){
return r*r*h*PI;
}

double get_mantelflaeche(double d, double h){
return d*h*PI;
}

double get_oberflaeche(double M, double G){
return M+2*G;
}*/

【问题讨论】:

标签: c function-prototypes redefinition


【解决方案1】:

在调用getgrundflaeche 之前,您从未声明过它。编译器假定未声明的函数返回int。后面的函数定义当然不一样。

通过在main()之前添加声明来解决这个问题:

double getgrundflaeche(double r);

int main(void){

【讨论】:

  • 谢谢!我认为这在 C 中是不需要的,在我得到的代码示例中,从来没有声明过函数。但主函数是示例中代码文件中的最后一个函数。
  • 这也可以解决问题 - 需要以一种或另一种方式看待函数的声明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多