ANSI C 7

ANSI C 7



6 STRUKTURY______

Ćwiczenie 6.5. Napisz funkcję undef, która usuwa nazwę i jej definicję z tablicy obsługiwanej przez funkcje lookup i install.

Ćwiczenie 6.6. Skonstruuj prostą wersję preprocesora obsługującego intrukcje #define (bezargumentowe), działającego na programach napisanych w języku C. Zastosuj funkcje opisane w tym rozdziale. Możesz też skorzystać z funkcji getch i ungetch.


Deklaracja typedef

W języku C wprowadzono mechanizm, zwany typedef, do tworzenia nowych nazw typów danych. Na przykład deklaracja

typedef int Lenght; /* Długość */

tworzy dla typu int synonim Lenght. Z typu Lenght można korzystać w deklaracjach, rzutowaniach itp. dokładnie tak samo, jak z typu int:

Lenght len, maxlen;

Lenght *lenghts[ ];

Podobnie deklaracja

typedef char *String; /* Tekst */

wprowadza synonim String dla typu char *, z którego można później korzystać w deklaracjach i rzutowaniu, np.

String p, lineptr[MAXLINES], alloc(int); int strcmp(String, String); p = (String) malloc(100);

Zwróć uwagę, że typ deklarowany w typedef pojawia się w miejscu nazwy zmiennej, a nie tuż za słowem typedef. Składniowo słowo typedef odpowiada klasie pamięć, jak extern, static itp. Aby wyróżnić nazwy definiowanych typów, rozpoczynamy }wielką literą.

_

Bardziej skomplikowanym przykładem może być użycie typedef do definiowani-węzłów drzewa opisanego wcześniej w tym rozdziale:

6.7 deklaracja typedef__

powered by

Mi siol


typedef struct tnode *Treeptr; /* Wskaźnik do węzła */

typedef struct tnode { char *word; int count;

Treeptr left;

Treeptr right;

} Treenode;


I* węzeł drzewa: */

/* wskaźnik do tekstu słowa */ /* licznik wystąpień */

/* lewy potomek */

/* prawy potomek */

/* Węzeł */

Obie deklaracje tworzą dwa nowe słowa kluczowe typów: Treenode (struktura) oraz Treeptr (wskaźnik do takiej struktury). Zatem procedurę talloc można napisać tak:

J

Treeptr talloc(void)

{

return(Treeptr) malloc(sizeof(Treenode));

}

Należy podkreślić, że deklaracja typedef w żadnym sensie nie tworzy nowego typu; ona po prostu daje nową nazwę dla pewnego już istniejącego typu. Nie ma tu także żadnej nowej semantyki: zmienne deklarowane w ten sposób mają dokładnie te same właściwości co zmienne, których deklaracje zostały podane szczegółowo. Deklaracja typedef jest w istocie podobna do #define z tą różnicą, że jest interpretowana przez kompilator, a więc może uczestniczyć w podstawieniach tekstowych, które są poza możliwościami preprocesora języka C. Na przykład deklaracja

typedef int (*PFI) (char *, char *);

tworzy typ o nazwie PFI jako „wskaźnik do funkcji zwracającej wartość typu int (o dwóch argumentach typu char *)”. Możemy go stosować w takich kontekstach, jak

PFI strcmp, numcmp;

(zamiast prototypów tych funkcji) w programie sortującym z rozdz. 5.

Poza skutkiem czysto estetycznym są dwa główne powody przemawiające za używaniem deklaracji typedef. Pierwszy dotyczy parametryzacji programu w związku z problemem przenoszenia oprogramowania. Jeżeli deklaracje typedef są stosowane dla tych typów danych, które mogą zależeć od maszyny, to tylko te deklaracje będą wymagać zmiany przy przenoszeniu programu. Jedną z częściej spotykanych sytuacji jest użycie typedef do zdefiniowania nazw różnych wielkości całkowitych, a następnie dokonanie

197


Wyszukiwarka

Podobne podstrony:
ANSI C 0 1 ELEMENTARZ Ćwiczenie 1.8. Napisz program zliczający znaki odstępu, tabulacji i nowego
ANSI C 7 6 STRUKTURY_ struct rect { struct point pt1; struct point pt2;}; Struktura rect zawiera d
ANSI C 6 4 FUNKCJE I STRUKTURA PROGRAMU_________._—---- W bibliotece standardowej występuje funkcj
ANSI C 7 4 FUNKCJE I STRUKTURA PROGRAMU _________ Rozróżnienie deklaracji zmiennej zewnętrznej i j
ANSI C 7 5 WSKAŹNIKI I TABLICE Ćwiczenie 5.1. Tak jak została napisana, funkcja getint traktuje zn
Zajęcia 4 - procedury i funkcje 1.    Napisz funkcję, która dokonuje dodania dwóch li
Zeszyt Cwiczeń FUNKCJI POZNAWCZYCH 2 (7) ĆWICZENIE 6 Napisz kolejno nazwy dni
Zad 1. Napisz funkcję, która dodaje elementy do listy jednokierunkowej. Jeżeli element istnieje, ele
Zdjęcie107 most • struktura łącząca pień mózgu i móżdżek, która odgrywa rolę w rożnych funkcjac
Ćwiczenia 4.1.    Utworzyć plik hello.m. W pliku utworzyć funkcję hello(), która
Napisz funkcję o nagłówku void Lista(TKlasas klasa, int limit); wyświetlającą uczniów ze struktury
9 funkcja dodająca dwie liczby; 9 lokalny zasięg zmiennych w funkcji. Zadania 9 Napisz funkcję, któr
Modele struktur organizacyjnych Ćwiczenie: Odwzorowanie funkcji personalnej w strukturach
ANSI C 7 1 ELEMENTARZ Model wprowadzania i wyprowadzania danych, realizowany przez funkcje z bibli
ANSI C 7 1 ELEMENTARZ dopiero w chwili wywołania funkcji i znika po zakończeniu jej działania. Z t
ANSI C 5 1 3 STEROWANIE (nieobowiązkowy + albo —). (W rozdziale 4 pokażemy funkcję atof, która wyk
ANSI C 8 6 STRUKTURY_______ Ta funkcja zakłada, że prostokąt jest reprezentowany w standardowej po
ANSI C 9 6 STRUKTURY 6 STRUKTURYTablice struktur Napiszmy program zliczający wystąpienia każdego s
ANSI C 2 6 STRUKTURY Warto tutaj omówić kilka spraw. Po pierwsze, deklaracja funkcji binsearch mus

więcej podobnych podstron