2017-02-25 9 views
0

C에서 기본 스크립트를 만들었지 만 콘솔에 이상한 오류가 나타납니다.오류 "정의되지 않은 참조"

정의되지 않은 참조 'is_substance_within_x_percent'


소스 코드 : 누군가가 내 스크립트가이 메시지를주는 이유를 말해 줄 수

#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
#define P 0.3  

#ifndef BOILING_POINTS_H  
#define BOILING_POINTS_H  
#define SUBSTANCE_CARBONDIOXIDE -78.5  
#define SUBSTANCE_AMMONIA  -35.5  
#define SUBSTANCE_WAX    45.0  
#define SUBSTANCE_WATER   100.7  
#define SUBSTANCE_OLIVE_OIL  300.0  
#define SUBSTANCE_MERCURY  356.9  
#define SUBSTANCE_SULFUR   444.6  
#define SUBSTANCE_TALC   1500.0  
#define SUBSTANCE_SILVER  2212.0  
#define SUBSTANCE_COPPER  2562.0   
#define SUBSTANCE_GOLD   2700.0  
#define SUBSTANCE_IRON   2862.0  
#define SUBSTANCE_SILICON  3280.0  
#endif  

int is_substance_within_x_percent(double t,double p,double boils); 

int main()  
{ 
    double t, p, boils;  
    int substance;  

    is_substance_within_x_percent(t, p, boils);  

    printf("Enter the boiling temperature of the substance.\n");  
    scanf("%lf", &t);  

    return EXIT_SUCCESS;  
} 

char * substance_name(double t,int substance)  
{ 
    if (t >= SUBSTANCE_CARBONDIOXIDE - P *substance && t <= SUBSTANCE_CARBONDIOXIDE + P *substance)  
    printf("The substance found is Carbon Dioxyde");  

    else if (t >= SUBSTANCE_AMMONIA - P *substance && t <= SUBSTANCE_AMMONIA + P *substance)  
    printf("The substance found is Ammonia");  

    else if (t >= SUBSTANCE_WAX - P *substance && t <= SUBSTANCE_WAX + P *substance)  
    printf("The substance found is Wax");  

    else if (t >= SUBSTANCE_WATER - P *substance && t <= SUBSTANCE_WATER + P *substance)  
    printf("The substance found is Water");  

    else if (t >= SUBSTANCE_OLIVE_OIL - P *substance && t <= SUBSTANCE_OLIVE_OIL + P *substance)  
    printf("The substance found is Olive Oil");  

    else if (t >= SUBSTANCE_MERCURY - P *substance && t <= SUBSTANCE_MERCURY + P *substance)  
    printf("The substance found is Mercury");  

    else if (t >= SUBSTANCE_SULFUR - P *substance && t <= SUBSTANCE_SULFUR + P *substance)  
    printf("The substance found is Sulfur");  

    else if (t >= SUBSTANCE_TALC - P *substance && t <= SUBSTANCE_TALC + P *substance)  
    printf("The substance found is Talc");  

    else if (t >= SUBSTANCE_SILVER - P *substance && t <= SUBSTANCE_SILVER + P *substance)  
    printf("The substance found is Silver");  

    else if (t >= SUBSTANCE_COPPER - P *substance && t <= SUBSTANCE_COPPER + P *substance)  
    printf("The substance found is Copper");  

    else if (t >= SUBSTANCE_GOLD - P *substance && t <= SUBSTANCE_GOLD + P *substance)  
    printf("The substance found is Gold");  

    else if (t >= SUBSTANCE_IRON - P *substance && t <= SUBSTANCE_IRON + P *substance)  
    printf("The substance found is Iron");  

    else if (t >= SUBSTANCE_SILICON - P *substance && t <= SUBSTANCE_SILICON + P *substance)  
    printf("The substance found is Silicon");  

    else  
    printf("This substance is unidentified.");  
} 
+0

is_substance_within_x_percent를 정의하지 않았습니다. –

+0

함수 is_substance_within_x_percent는 선언되었지만 정의되지 않았습니다. is_substance_within_x_percent가 쓰는 다른 파일에 다른 위치가 있습니까? (is_substance_within_x_percent에 실제 코드가있는 곳) – NineBerry

답변

-2

처음의 이름을 변경 두 번째 기능은 is_substance_within_x_percent

둘째로, 당신은 본질에 물질을 사용하지 않습니다.

세 번째 이유는 scanf를 사용하지 않는 이유입니다.

네 번째 주에서는 세 개의 이중 인수를 선언하고 함수가 무엇인지 알지 못하고 함수에 전달했습니다.

+0

두 번째 함수의 이름을 변경하면 컴파일되지 않습니다 (적어도 두 가지 이유로) – UnholySheep