DODATEK A PRZEWODNIK JĘZYKA C
union { struct { int type; ł n;
struct { int type; int intnode;
} ni; struct { int type; float floatnode;
} nf;
} u;
• • •
u.nf.type = FLOAT; u.nf.floatnode = 3.14;
• • •
if (u.n.type == FLOAT)
... sin (u.nf.floatnode) ...
Wyliczenia są szczególnymi typami o wartościach ze zbioru nazwanych stałych - tzw. wyliczników. Postać specyfikatora wyliczenia zapożyczono od struktur i unii.
specyfikator-wyliczenia:
enum identyfikatorze { lista-wyliczników } enum identyfikator
lista-wyliczników:
wylicznik
lista-wyliczników , wylicznik
wylicznik:
identyfikator
identyfikator = wyraienie-stałe
Identyfikatory na liście wyliczników są deklarowane jako stałe typu int i mogą wystąpić wszędzie tam, gdzie są wymagane stałe*. Jeśli żaden z wyliczników nie wystę-
Z wyjątkiem wyrażeń w #if. - Przyp. tłum.
A8 DEKLARACJE___I powered by I
puje z operatorem =, to wartości tych stałych rozpoczynają się od 0ŁjłmA^a—i o 1 wraz z kolejnością deklaracji czytanych od lewej strony do prawej. Deklaracja z operatorem = nadaje odpowiedniemu identyfikatorowi wskazaną wartość; wartości kolejnych identyfikatorów wzrastają począwszy od podanej wartości.
W tym samym zasięgu nazwy wyliczników muszą być unikalne i muszą być różne od nazw zwykłych zmiennych, natomiast ich wartości nie muszą być różne.
Rola identyfikatora w specyfikatorze wyliczenia jest taka sama, jak rola etykietki struktury w specyfikatorze struktury - jest nazwą danego wyliczenia. Zasady odnoszące się do specyfikatora wyliczenia z etykietką lub bez i z listą są takie same, jak w przypadku specyfikatorów struktur i unii z tym jednak wyjątkiem, że nie istnieją niekompletne typy wyliczenia - etykietka specyfikatora wyliczenia bez listy wyliczników musi odnosić się do występującego w jej zasięgu specyfikatora z listą.
Wyliczenia nie występowały w pierwszym wydaniu książki, ale od paru lat
są częścią języka C.
Składnia deklaratorów jest następująca: deklarator:
wskaźnikopc bezpośredni-deklarator
bezpośredni-deklarator: identyfikator ( deklarator )
bezpośredni-deklarator [ wyrażenie-stałeopc ] bezpośredni-deklarator ( lista-typów-parametrów ) bezpośredni-deklarator ( lista-identyfikatorówopc )
wskaźnik:
* lista-kwalifikatorów-typuopc
* lista-kwalifikatorów-typuopc wskaźnik
lista-kwalifikatorów-typu:
kwalifikator-typu
lista-kwalifikatorów-typu kwalifikator-typu
Postać deklaratorów przypomina postać wyrażeń z adresowaniem pośrednim, wywołaniem funkcji lub odwołaniem do tablicy; łączność jest taka sama.
285