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:
- 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 oraz deklaruje () go. Na przykład:
- 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ę
). Jeśli
pobrałeś ten plik z innego miejsca – proszę, poinformuj mnie o tym:
. Jeśli chcesz umieścić ten plik na
swojej stronie lub masz jakieś uwagi – skontaktuj się ze mną.
-1/1-
extern
int
z1;
extern
uint8_t tab[];
int
f(
void
);
int
z1;
int
z2 =
0
;
uint8_t tab[
10
];
int
f(
void
)
{
return
0
;
}