2016-05-30 4 views
0

Ошибка, возвращенная в строке 27 (строка, начинающаяся с «сборов»), с указанием «необъявленной ссылки» (для вычисления «Большая стоимость», а также примечания компилятора: «ld возвратил 1 статус выхода» Я могу ' т для жизни мне получить то, что нужно изменить.undefined reference return exit status

float calculateCharge(float); 

int main() 
{ 
    printf("Hello world!\n"); 

    int car; 
    int num_cars; 
    float total_charges = 0; 
    float total_hours = 0; 

    printf("How many cars?\n\n");  //prompt 
    scanf("%d", &num_cars);   //prompt 

    float hours [num_cars + 1];  //declaring parallel arrays 
    float charges [num_cars + 1]; 

    for (car=1; car<=num_cars; car++) 
    { 
     printf("How many hours for car #%d?", car);  //prompt 
     scanf("%f", &hours[car]);      //input hours 
     charges [car] = calculateCharge(hours [car]); 
     total_charges = total_charges + charges [car]; 
     total_hours = total_hours + hours [car]; 
    } 
    printf("%s\t%s\t%s\t", "Car", "Hours", "Charge"); 

    for (car = 1; car <=num_cars; car++) 
    { 
     printf("\n%d\t%.2f\t%.2f\n", car, hours[car], charges[car]); 
    } 

printf("\n%s\t%.2f\t%.2f\n", "Total", total_hours, total_charges); 

return 0; 
} 
+5

Us Индексирование с принудительным базовым индексом на ваших массивах будет только разочаровываться в закодированных кодировщиках, а кодировщики-новички смущены. Пожалуйста, не делайте этого, используйте «нормальную» нулевую базу, как и все остальные. –

+3

Что касается вашей проблемы, где вы реализуете (* define *) функцию 'calculateCharge'? Вы * делаете это где-то? –

+3

У вас есть * объявление * для 'calculateCharge()'. Но где определение 'calculateCharge()'? –

ответ

3

Предполагая, что это совокупность коды, вы предоставили опережающее объявление о том, что подпись calculateCharge есть, так что компилятор может генерировать код (когда он знает, где находится фактическое определение), но вы не указали это фактическое определение.