2012-12-13 5 views
3

이 질문이 도움이 될 경우 투표하십시오. :)C99에서 'sum'함수의 암시 적 선언이 유효하지 않습니다.

나는 이것에 대한 해결책을 찾고 있었지만 도움이 될만한 것을 찾지 못했습니다. 오류가 발생합니다 : - C99에서 'sum'함수의 암시 적 선언이 유효하지 않습니다. - 'average'함수의 암시 적 선언이 C99에서 유효하지 않습니다. - 'average'의 충돌 유형 누구든지 전에 경험 했습니까? Xcode에서 컴파일하려고합니다.

#import <Foundation/Foundation.h> 


    int main(int argc, const char * argv[]) 
    { 

     @autoreleasepool 
     { 
      int wholeNumbers[5] = {2,3,5,7,9}; 
      int theSum = sum (wholeNumbers, 5); 
      printf ("The sum is: %i ", theSum); 
      float fractionalNumbers[3] = {16.9, 7.86, 3.4}; 
      float theAverage = average (fractionalNumbers, 3); 
      printf ("and the average is: %f \n", theAverage); 

     } 
     return 0; 
    } 

    int sum (int values[], int count) 
    { 
     int i; 
     int total = 0; 
     for (i = 0; i < count; i++) { 
      // add each value in the array to the total. 
      total = total + values[i]; 
     } 
     return total; 
    } 

    float average (float values[], int count) 
    { 
     int i; 
     float total = 0.0; 
     for (i = 0; i < count; i++) { 
      // add each value in the array to the total. 
      total = total + values[i]; 
     } 
     // calculate the average. 
     float average = (total/count); 
     return average; 
    } 
+0

나를 위해 매력처럼 작동이 답변을 확인하십시오! https://stackoverflow.com/a/46221365/3063226 – Heitor

답변

7

이 두 함수에 대한 선언을 추가하거나 main 앞에 두 함수 정의를 이동해야합니다.

+0

아니요. https://stackoverflow.com/a/46221365/3063226을 확인하십시오. 설명과 해결책이 바로 있습니다! – Heitor

7

문제는 시간 컴파일러는 당신이 그 이름을 가진 기호를 알고 어쩌려 구`t sum를 사용하는 코드를 볼 수 있다는 것입니다. 문제를 해결하기 위해 그것을 선언 할 수 있습니다.

int sum (int values[], int count); 

main() 앞에 넣으십시오. 이 방법은 컴파일러가 sum의 첫 번째 사용을 볼 때 컴파일러가 존재한다는 것을 알고 있으므로 다른 곳에서 구현해야합니다. 그렇지 않으면 라이너 오류가 발생합니다.

+0

올바른 방향으로 나를 안내해 주셔서 고맙습니다. 또한 다음을 포함해야했습니다. int sum (int values ​​[], int count); float average (float 값 [], int count); 위 main() –

+0

정확히 같은 오류가 있습니까? – imreal

+1

Nick 고마워. 나는 덧붙여 야했다 : float average (float values ​​[], int count); –

관련 문제