Неявное объявление функции 'сумма' недопустимо в C99

Пожалуйста, проголосуйте, если этот Вопрос поможет вам.:)

Я искал решение для этого, но не нашел ничего, что поможет. Я получаю ошибки: - Неявное объявление функции "сумма" недопустимо в C99 - Неявное объявление функции "среднее" недопустимо в C99 - Конфликт типов для "среднего" Кто-нибудь сталкивался с этим раньше? Я пытаюсь скомпилировать его в 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;
    }

2 ответа

Решение

Вам нужно добавить объявление для этих двух функций или переместить два определения функций перед main.

Проблема в том, что к тому времени компилятор видит код, в котором вы используете sum он не знает ни одного символа с таким именем. Вы можете отправить объявление, чтобы решить проблему.

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

Поместите это перед main(), Таким образом, когда компилятор видит первое использование sum он знает, что он существует и должен быть реализован где-то еще. Если это не так, это даст ошибку лайнера.

Другие вопросы по тегам