Autor: Dondu
Kurs języka C: Spis treści
Gdy kompilator przygotowuje wynikowy kod maszynowy, może zaprotestować napotykając się na użycie funkcji, która nie została jeszcze zdefiniowana. W szczególności ten przypadek może się zdarzyć, gdy definiujesz funkcję w dalszych liniach kodu niż funkcję ją wywołującą.
W takiej sytuacji należy wcześniej poinformować kompilator, że taka funkcja istnieje. Robimy to za pomocą deklarowania funkcji. Deklarowanie funkcji polega na przekopiowaniu pierwszej linijki funkcji i zakończeniu jej średnikiem.
W poniższym przykładzie pokazałem, co jest deklaracją, a co definicją funkcji obliczenia().
Przykład 1 (w kompilatorze)
//deklaracja funkcji
int obliczenia(int a, int b, int c);
//program zaczyna się od funkcji main()
int main(void)
{
//oblicz i wdrukuj
printf( "a*b+c = %d \n", obliczenia(5, 23, 9) );
return 0; //zakończ wykonywanie programu
}
//definicja funkcji
int obliczenia(int a, int b, int c){
return a*b+c;
}
Ale kompilator czasami protestuje:
implicit declaration of function
(niejawna deklaracja funkcji)
Jeżeli w trakcie kompilacji natkniesz się na warning o treści:
warning: implicit declaration of function ‘JakasFunkcja’
to właśnie oznacza problem braku deklaracji funkcji.
Poniżej przykład programu, który wygeneruje taki właśnie warning.
Przykład 2 (w kompilatorze)
//deklaracja funkcji
//char JakasFunkcja(int a);
int main()
{
int z;
for(z=0; z<10; z++){
JakasFunkcja(z);
}
return 0;
}
//definicja funkcji
char JakasFunkcja(int a){
printf( "%d \n", a);
}
W CManiak'u w powyższym przykładzie znajdziesz zakomentowaną deklarację funkcji. Usuń komentarz, a przekonasz się, że kompilacja przebiegnie poprawnie.
Warningi trzeba eliminować!
Więcej na ten temat przeczytasz tutaj: Błędy kompilacji programu
Więcej na ten temat przeczytasz tutaj: Błędy kompilacji programu
Kurs języka C: Spis treści
35





Brak komentarzy:
Prześlij komentarz