[ Pobierz całość w formacie PDF ]
.Dane zawarte w tych czterech komunikatach zmie-niają się w szerokim zakresie zależnie od samych komunikatów.Komunikat otwórz musi zawierać nazwę taśmy, natomiast komunikat zapisz musiprzenosić dane, które zostaną zapisane.Komunikat przeczytaj musi zawierać jak naj-większą liczbę znaków, które zostaną odczytane, natomiast komunikat zamknij nie za-wiera żadnych dodatkowych informacji.#define DATA_MAX 1024 /* Maksymalna ilosc danych do zapisu i odczytu */struct open_msg {char name[30]; /* Nazwa tasmy */};struct read_msg {int length; /* Maksymalna predkosc odczytu */};struct write_msg {int length; /* Ilosc bajtow do zapisania */char data[DATA_MAX]; /* Zapisywane dane */};struct close_msg {};const int OPEN_CODE=0; /* Kod otwieranego komunikatu */const int READ_CODE=1; /* Kod odczytywanego komunikatu */const int WRITE_CODE=2 /* Kod zapisywanego komunikatu */const int CLOSE_CODE=3; /* Kod zamykanego komunikatu */struct msg {int msg; /* Typ komunikatu */union {struct open_msg open_data;struct read_msg read_data;struct write_msg write_data;struct close_msg close_data} msg_data;};200 Rozdział 12.Typy złożoneInstrukcja typedefJęzyk C umożliwia programiście zdefiniowanie swoich własnych typów danych poprzezzastosowanie instrukcji typedef.Instrukcja ta jest środkiem, dzięki któremu program możerozszerzyć podstawowe typy danych języka C.Ogólna postać instrukcji typedef jest na-stępująca,typedef deklaracja_typu;gdzie deklaracja_typu jest identyczna jak deklaracja zmiennej, poza tym że zamiast nazwy_zmiennej jest użyta nazwa typu.Na przykład instrukcjatypedef int count;definiuje nowy typ count, który jest taki sam jak typ całkowity.Tak więc poniższa deklaracjacount flag;jest identyczna jak ta deklaracjaint flag;Na pierwszy rzut oka powyższa instrukcja niewiele różni się od tej:#define count intcount flag;Jednak instrukcje typedef mogą być stosowane do definiowania bardziej złożonychobiektów, co wykracza poza zakres możliwości prostej instrukcji #define.Oto przykład:typedef int group[10];Został teraz zdefiniowany nowy typ danych o nazwie group określający tablicę dziesięciuliczb całkowitych:main(){typedef int group[10]; /* Utworzenie nowego typu 'group' */group totals; /* Przypisanie nowego typu danych zmiennej */for (i = 0; i
[ Pobierz całość w formacie PDF ]