2015-03-26 5 views
0

Итак, я работаю над заданием, и мой учитель не очень хорошо объяснил функции. Я сэкономить время и показать основной сегмент, где происходит ошибка:Имена параметров (без типов) в объявлении функции

#include <stdio.h> 
6 int main(void) 
7 { 
8 double Depth; 
9 double celsius_at_depth(Depth); 
10 { 
11 10*(Depth)+20; 
12 } 

и ошибка:

GHP#4.c:9:2: warning: parameter names (without types) 
in function declaration [enabled by default] 
double celsius_at_depth(Depth); 
^ 

Sorry о форматировании, я хотел, чтобы это было легче увидеть. не является двойным предположительным типом параметра для функции celsius_at_depth?

EDIT: Я посмотрел вверх ошибку на сайте, но я не совсем понимаю, это в том же форматирование, как мой код, так что я чувствовал, что лучше всего размещать заново

+0

Что это за строка 'double celsius_at_depth (Depth),' for? –

+1

Ваши намерения иметь функцию celcius_at_depth? Вам нужно будет определить его вне 'main'. – DigitalNinja

+0

@BinaryJudy: Нет, он должен будет * определить * его вне 'main'. Вероятно, лучше всего объявить его вне 'main', но разрешены локальные функции. (Определение функции включает в себя '{...}'; в декларации нет.) –

ответ

2

Определение функции внутри другого функция является нестандартным расширением gcc AFAIK, так что это не очень хорошая идея.

Объявить функцию сначала нужно переместить его за пределы main() так

double celsius_at_depth(double depth); 

, а затем вы можете назвать его основным, как этот

#include <stdio.h> 
int main(void) 
{ 
    double depth = 10; 
    printf("celsius_at_depth(%f) = %f\n", depth, celsius_at_depth(depth)) 
    return 0; 
} 

затем определение функции

double celsius_at_depth(double depth); 
{ 
    return 10 * depth + 20; 
} 
+0

Что вы делаете с возвращаемым значением из 'celsius_at_depth'? –

+0

Это проблема OP, но это, безусловно, раздражает, я исправлю это. –

+0

И либо объявите, либо определите функцию до * main *. – immibis

Смежные вопросы