dek_def.pdf

(96 KB) Pobierz
793113 UNPDF
Programowanie procesorów w języku C
dodatek “różnica między deklaracją a definicją”
Nazwy “deklaracja” i “definicja” były używane dość swobodnie. Jednak oba te słowa oznaczają w C dwa
różne działania i warto wreszcie powiedzieć sobie dokładnie co one oznaczają.
Deklaracja:
Deklaracja określa pewne własności identyfikatora, jednak nie rezerwuje pamięci. Na przykład:
extern int z1;
extern uint8_t tab[];
int f( void );
- informuje kompilator, że identyfikator z1 oznacza zmienną typu int. Jednocześnie zaznaczono, że
zmienna ta jest tworzona poza aktualnym plikiem źródłowym.
- informuje kompilator, że identyfikator tab jest tablicą elementów ośmiobitowych bez znaku.
- informuje kompilator, że identyfikator f jest funkcją zwracającą wartość typu int oraz nie przyjmującą
żadnych argumentów.
Definicja:
Zajmuje pamięć dla obiektu ora z deklaruje ( ) go. Na przykład:
int z1;
int z2 = 0 ;
uint8_t tab[ 10 ];

int f( void )
{
return 0 ;
}
- tworzy zmienna z1, zajmuje dla niej pamięć (dla WinAVR będą to dwa bajty) oraz informuje
kompilator, że identyfikator z1 oznacza zmienną typu int.
- tworzy zmienna z2, zajmuje dla niej pamięć, inicjuje ją wartością 0 oraz informuje kompilator, że
identyfikator z2 oznacza zmienną typu int.
- tworzy tablicę tab , zajmuje dla niej pamięć (10 bajtów) oraz informuje kompilator, że identyfikator tab
jest tablicą elementów ośmiobitowych bez znaku.
- tworzy funkcję f, zajmuje dla niej pamięć (pamięć ROM, umieszcza w niej program), oraz informuje
kompilator, że identyfikator f jest funkcją zwracającą wartość typu int oraz nie przyjmującą żadnych
argumentów.
Podsumujmy skrótowo:
Deklaracja: Przypisanie własności do identyfikatora.
Definicja: Zajęcie pamięci dla obiektu oraz definicja.
Wersja przeznaczona do bezpłatnego udostępnienia poprzez stronę www.elportal.pl ( www.elportal.com.pl , www.edw.com.pl ) . Jeśli
pobrałeś ten plik z innego miejsca – proszę, poinformuj mnie o tym: radoslaw.koppel@elportal.pl . Jeśli chcesz umieścić ten plik na
swojej stronie lub masz jakieś uwagi – skontaktuj się ze mną.
-1/1-
793113.001.png 793113.002.png
Zgłoś jeśli naruszono regulamin