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