Length *lengths[];
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
typedef char *String;
Π΄Π΅Π»Π°Π΅Ρ String ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ char *, Ρ. e. ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° char, ΠΈ ΠΏΡΠ°Π²ΠΎΠΌΠ΅ΡΠ½ΡΠΌ Π±ΡΠ΄Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
String Ρ, lineptr[MAXLINES], alloc(int);
int strcmp(String, String);
p = (String) malloc(100);
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΠΉ Π² typedef ΡΠΈΠΏ ΡΡΠΎΠΈΡ Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΡΡΠ°Π·Ρ Π·Π° ΡΠ»ΠΎΠ²ΠΎΠΌ typedef. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ»ΠΎΠ²ΠΎ typedef Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΊΠ»Π°ΡΡ ΠΏΠ°ΠΌΡΡΠΈ - extern, static ΠΈ Ρ. Π΄. ΠΠΌΠ΅Π½Π° ΡΠΈΠΏΠΎΠ² Π·Π°ΠΏΠΈΡΠ°Π½Ρ Ρ Π·Π°Π³Π»Π°Π²Π½ΡΡ Π±ΡΠΊΠ² Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΡΠ΄Π΅Π»ΡΠ»ΠΈΡΡ.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ typedef Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΠ·Π»ΠΎΠ² Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΡΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅.
typedef struct tnode *Treeptr;
typedef struct tnode {/* ΡΠ·Π΅Π» Π΄Π΅ΡΠ΅Π²Π°: */
char *word; /* ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΠΊΡΡ */
int count; /* ΡΠΈΡΠ»ΠΎ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ */
Treeptr left; /* Π»Π΅Π²ΡΠΉ ΡΡΠ½ */
Treeptr right; /* ΠΏΡΠ°Π²ΡΠΉ ΡΡΠ½ */
} Treenode;
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π²Π° Π½ΠΎΠ²ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²: Treenode (ΡΡΡΡΠΊΡΡΡΠ°) ΠΈ Treeptr (ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ). Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ talloc ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅:
Treeptr talloc(void) {
return (Treeptr) malloc(sizeof(Treenode));
}
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ typedef Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΎΠ½ΠΎ Π»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠΈΠΏΡ. ΠΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° ΡΡΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π½Π΅ Π½Π΅ΡΡΡ, ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ typedef Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ #define Ρ ΡΠ΅ΠΌ Π»ΠΈΡΡ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
typedef int (*PFI)(char *, char *);
ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΠΏ PFI - "ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ (Π΄Π²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° char *), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ int", ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π² Π³Π»Π°Π²Π΅ 5, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅:
PFI strcmp, numcmp;
ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ typedef ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ. ΠΠ΅ΡΠ²Π°Ρ - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ typedef ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ, ΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ typedef. ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ typedef-ΠΈΠΌΠ΅Π½ Π΄Π»Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»ΡΠΌΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌΠΈ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ short, int ΠΈΠ»ΠΈ long, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ size_t ΠΈ ptrdiff_t.
ΠΡΠΎΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎΠ±ΡΠΆΠ΄Π°ΡΡΠ°Ρ ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ typedef,- ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΡΠΌ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π’ΠΈΠΏ, Π½Π°Π·Π²Π°Π½Π½ΡΠΉ Π’reeptr (ΠΎΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΡ ΡΠ»ΠΎΠ² tree - Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈ pointer - ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ), Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ΅Π½, ΡΠ΅ΠΌ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ.
6.8 ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ - ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ (Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ) ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². ΠΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±Π΅Π· Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΌ Π·Π°ΠΏΠΈΡΡΠΌ Π² ΠΠ°ΡΠΊΠ°Π»Π΅.
ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ Π±Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΡΡ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π·Π°Π²Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ int, float ΠΈΠ»ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ char *. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ ΡΠΈΠΏΠ°. Π Π°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ±Π½Π΅Π΅, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΏΠΎ ΠΎΠ±ΡΡΠΌΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΈΠΏΠ°. Π¦Π΅Π»Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ - ΠΈΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Ρ Π½Π° Π·Π°ΠΊΠΎΠ½Π½ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡΡ Ρ ΡΠ°Π½ΠΈΠ»Π° Π² ΡΠ΅Π±Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ². Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΡΡΡΡΠΊΡΡΡ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
union u_tag {
int ival;
float fval;
char *sval;
} u;
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ u Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΡΠΎΠ±Ρ Π² Π½Π΅ΠΉ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»Π°ΡΡ Π»ΡΠ±Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΡΠ΅Ρ ΡΠΈΠΏΠΎΠ²: ΡΠΎΡΠ½ΡΠΉ Π΅Π΅ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ u ΠΈ Π΄Π°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ , Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΎΠΌΠ΅ΡΠ½ΠΎ, Ρ. Π΅. Π΅ΡΠ»ΠΈ ΡΠΈΠΏ Π²Π·ΡΡΠΎΠ³ΠΎ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΈΠΏΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ - ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π΅ΡΡΠΎ Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½ΠΎ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΈΠΌΡ-ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΠΈΠ»ΠΈ
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ-Π½Π°-ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅-βΊΡΠ»Π΅ΠΌΠ΅Π½Ρ
Ρ. Π΅. Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΡΠ»ΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ u ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ utype, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
if (utype == INT)
printf("%d\n", u.ival);
else if (utype == FLOAT)
printf("%f\n", u.fval);
else if (utype == STRING)
printf("%s\n", u.sval);
else
printf ("Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΡΠΈΠΏ %d Π² utype\n", utype);
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠ°ΠΏΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ (ΠΊΠ°ΠΊ ΠΈ ΡΡΡΡΠΊΡΡΡΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ), ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΡΡΡΠΊΡΡΡ
struct {
char *name;
int flags;
int utype;
union {
int ival;
float fval;
char *sval;
} u;
} symtab[NSYM];
ΠΊ ival ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
symtab[i].u.ival
Π° ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΡΠΎΠΊΠΈ sval ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π»ΡΠ±ΡΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π²ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²:
*symtab[i].u.sval
symtab[i].u.sval[0]
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ - ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°, Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠΌΠ΅ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΡΡ Π² Π½Π΅ΠΉ ΡΠ°ΠΌΠΎΠΌΡ Π±ΠΎΠ»ΡΡΠΎΠΌΡ Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π° Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π²ΡΠ΅ΠΌ ΡΠΈΠΏΠ°ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡΠ΅ ΠΊ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ, Π³ΠΎΠ΄ΡΡΡΡ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, Ρ. Π΅. Π·Π°ΠΊΠΎΠ½Π½Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ, Π²Π·ΡΡΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΎΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΠΌΠ΅ΡΡΠΈΠΌ ΡΠΈΠΏ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°; ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ u ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° int.
Π Π³Π»Π°Π²Π΅ 8 (Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°Π²Π΅Π΄ΡΡΡΠ΅ΠΉ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ) ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡΠ»ΠΎ Π²ΡΡΠΎΠ²Π½Π΅Π½ΠΎ ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ.
6.9 ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ
ΠΡΠΈ Π΄Π΅ΡΠΈΡΠΈΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠ΄Π½Π° ΠΈΠ· ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Π²ΡΡΡΠ΅ΡΠ°ΡΡΠ°ΡΡΡ Π² Π·Π°Π΄Π°ΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², - ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏ ΠΎΠ΄Π½ΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°ΠΆΠΊΠΎΠ². Π€ΠΎΡΠΌΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡ Π½Π°Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΈ Π΄ΠΈΠΊΡΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠΎΠΉ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²: Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡΡΡ ΠΊ ΡΠ°ΡΡΡΠΌ ΡΠ»ΠΎΠ²Π°.
ΠΠΎΠΎΠ±ΡΠ°Π·ΠΈΠΌ ΡΠ΅Π±Π΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅Π΄ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΡΠΎΠ±ΠΎΠΉ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ: Π²Π½Π΅ΡΠ½ΡΡ ΠΈ/ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ Ρ. Π΄. Π‘Π°ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ - ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°ΠΆΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»ΠΎΠ²Π΅ ΡΠΈΠΏΠ° char ΠΈΠ»ΠΈ int.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠ°ΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡΠ° "ΠΌΠ°ΡΠΎΠΊ", ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ ΡΡΠΈΡ Π±ΠΈΡΠΎΠ², ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²
#define KEYWORD 01 /* ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ */
#define EXTERNAL 02 /* Π²Π½Π΅ΡΠ½ΠΈΠΉ */
#define STATIC 04 /* ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ */
ΠΈΠ»ΠΈ Π²
enum { KEYWORD = 01, EXTERNAL = 02, STATIC = 04 };
Π§ΠΈΡΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ. Π’ΠΎΠ³Π΄Π° Π΄ΠΎΡΡΡΠΏ ΠΊ Π±ΠΈΡΠ°ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄Π΅Π»ΠΎΠΌ "ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ", ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π³Π»Π°Π²Π΅ 2 (ΡΠ΄Π²ΠΈΠ³, ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²Π·ΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ). ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ΄Ρ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ. Π’Π°ΠΊ,
flags |= EXTERNAL | STATIC;
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ 1 Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ flags,