Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

czwartek, 10 lutego 2011

Kurs C: Funkcje - deklaracja


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


Kurs języka C: Spis treści

35
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Brak komentarzy:

Prześlij komentarz

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.