2013-11-09 2 views
8

문제가 있습니다. Visual Studio 2013을 사용하고 다음 오류가 발생합니다.오류 C2371 : 'functionname'재정의 : 다른 기본 유형

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

왜이 오류가 발생하는지 알 수 없습니다. VS12에서 함수 getgrundflaeche()을 호출하려고 할 때 동일한 오류가 발생합니다.

#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; 
}*/ 
+0

[시제품없이 오래된 스타일의 기능을 가진 C 컴파일러의 동작]의 중복 (http://stackoverflow.com/questions/2287164/the -bat-of-ac-compiler-with-prototype을 가진 오래된 스타일의 함수) –

답변

16

당신은 그것을 호출하기 전에 getgrundflaeche를 선언하지 : 여기

는 코드입니다. 컴파일러에서는 선언되지 않은 함수가 int을 반환한다고 가정합니다. 물론 이후의 함수 정의는 다릅니다.

main() 전에 선언을 추가함으로써이 문제를 해결 :

double getgrundflaeche(double r); 

int main(void){ 
+0

고마워요! 나는 이것이 C와 코드 예제에서 필요 없다고 생각했다. 결코 선언 된 함수가 없었다. 그러나 주요 기능은 예제의 코드 파일에서 마지막 기능입니다. – user2974830

+0

그것도 문제를 해결할 것입니다 - 함수의 선언은 어떤 식 으로든보아야합니다. –