Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c

ОбъявлСния Typedef

ОбъявлСниС typedef β€” это объявлСниС с typedef Π² качСствС класса хранСния. Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΎΡ€ становится Π½ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. ОбъявлСния typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ понятных ΠΈΠΌΠ΅Π½ для Ρ‚ΠΈΠΏΠΎΠ², ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² языкС C ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ИмСна typedef ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

ОбъявлСниС typedef интСрпрСтируСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ становится синонимом Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΈΠΏ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² объявлСнии.

Бинтаксис

declaration:
declaration-specifiers init-declarator-listopt;

declaration-specifiers:
storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt

storage-class-specifier:
typedef

type-specifier:
void
char
short
int
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name

ИмСна Typedef ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ пространство ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ имя typedef ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² локальной области. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΡ€ΠΈ объявлСнии Π² локальной области ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ имя typedef, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ объявлСнии Ρ‡Π»Π΅Π½Π° структуры Π»ΠΈΠ±ΠΎ объСдинСния Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области ΠΈΠ»ΠΈ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ спСцификатор Ρ‚ΠΈΠΏΠ°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя FlagType для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Ρ‡Π»Π΅Π½Π° структуры ΠΈΠ»ΠΈ Ρ‡Π»Π΅Π½Π° объСдинСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ:

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ FlagType воспринимаСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ ΠΊΠ°ΠΊ Π·Π°Π½ΠΎΠ²ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ объявлСниС нСдопустимо, ΠΊΠ°ΠΊ ΠΈ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ любой Ρ‚ΠΈΠΏ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ массивов. Имя typedef для Ρ‚ΠΈΠΏΠ° указатСля Π½Π° структуру ΠΈΠ»ΠΈ объСдинСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ опрСдСлСния Ρ‚ΠΈΠΏΠ° структуры ΠΈΠ»ΠΈ объСдинСния, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области видимости, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС.

ИмСна typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ понятным. ВсС Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… объявлСния signal Π·Π°Π΄Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ объявлСнии ΠΈΠΌΠ΅Π½Π° typedef Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ объявлСния typedef:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ Ρ‚ΠΈΠΏ DRAWF для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° int. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ объявлСниС

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

C Π£Ρ€ΠΎΠΊ 24. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° typedef

Π’ ΡƒΡ€ΠΎΠΊΠ΅ 13 ΠΌΡ‹ познакомились с константами, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠœΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ своё значСния Π΄ΠΎ окончания своСго сущСствования.

Волько ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ такая ситуация, Ρ‡Ρ‚ΠΎ констант ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ потрСбуСтся слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ΄ Π½ΠΈΡ… потрСбуСтся слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠΌΡ‘Π½ ΠΈ, самоС Π³Π»Π°Π²Π½ΠΎΠ΅, слишком ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΈΡ… значСниях ΠΌΡ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² запутаСмся ΠΈ рискуСм ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСсколько констант с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎΠ³Π΄Π°, скорСй всСго, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹ ошибки, Ссли эти константы Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константный массив, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΡ‘Π½ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт, Π° ΠΏΠΎ индСксу ΠΏΠΎΡ€ΠΎΠΉ Π½Π΅ совсСм понятно, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ элСмСнт ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ для Ρ‚Π°ΠΊΠΎΠΉ ситуации Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ пСрСчисляСмый Ρ‚ΠΈΠΏ для констант, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ сразу нСсколько констант с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎΠ± ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Для объявлСния пСрСчисляСмого Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ попросту Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚, пСрСчислСния слуТит Π²ΠΎΡ‚ такая конструкция

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c

Π­Ρ‚ΠΎ общая Ρ„ΠΎΡ€ΠΌΠ° конструкции enum. Данная конструкция, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ пСрСчисляСмый Ρ‚ΠΈΠΏ, начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова enum, Π—Π°Ρ‚Π΅ΠΌ слСдуСт имя пСрСчисляСмого Ρ‚ΠΈΠΏΠ°, Π° Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Ρ‘Ρ‚ Π±Π»ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° констант, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ константам ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° сразу, Π° Ссли Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ), Ρ‚ΠΎ ΠΎΠ½ΠΎ присвоится автоматичСски. Π”Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ константы Π² Π΄Π°Π½Π½ΠΎΠΌ спискС, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Если ΠΌΡ‹ Π΄Π°ΠΆΠ΅ самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ константС Π² спискС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ присвоим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” 0 (ноль).

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ практичСски ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ пСрСчисляСмый Ρ‚ΠΈΠΏ

enum eColor

Π’Π°ΠΊ ΠΊΠ°ΠΊ здСсь ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ присваиваСм нашим элСмСнтам пСрСчислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, кстати, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ пСрСчислитСлями, Ρ‚ΠΎ ΠΈΡ… значСния Π±ΡƒΠ΄ΡƒΡ‚ 0, 1 ΠΈ 2.

ПослС Ρ‚Π°ΠΊΠΎΠ³ΠΎ объявлСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово enum

enum eColor clr;

Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ понятно Π²Π°ΠΌ станСт ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ практичСски Π² исходном ΠΊΠΎΠ΄Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ #typegef. Как извСстно, Π² языкС C Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚ΠΈΠΏ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ своё имя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int, float ΠΈ Ρ‚.Π΄. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ€ΠΎΠΉ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π² нашСм ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ свой Ρ‚ΠΈΠΏ ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ имя. Для этого ΠΈ слуТит Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #typedef.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°Ρ‚ΡŒ стандартному Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… своё имя, для этого сущСствуСт Π²ΠΎΡ‚ такая общая Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef Π² c

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚ΠΈΠΏΡƒ float Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ своё имя

typedef float double_32 ;

ПослС Π΄Π°Π½Π½ΠΎΠ³ΠΎ объявлСния имя double_32 станСт ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ float ΠΈ Π΅Π³ΠΎ спокойно ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

double_32 d1;

d1 = 0.01;

НапримСр, ΠΈ пСрСчислСниС ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· typedef

typedef enum

HIGHEST

> eSize ;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… пСрСчисляСмого Ρ‚ΠΈΠΏΠ° Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ послС Π±Π»ΠΎΠΊΠ° ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова enum

eSize var_Size = HIGH ;

Π₯отя, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π² сСгодняшнСй Ρ‚Π΅ΠΌΠ΅, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚, Π½ΠΎ всё ΠΆΠ΅, ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Ρ‘ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ просто обязаны.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ создадим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ MYPROG23 ΠΈ Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Π΅Π³ΠΎ MYPROG24.

Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π΅ Π·Π°ΠΏΠΎΡ€Ρ‚ΠΈΠ² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅, ΠΌΡ‹ с Π²Π°ΠΌΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ ΠΈ опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² (C++)

ОбъявлСниС псСвдонима ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС синонима для Ρ€Π°Π½Π΅Π΅ объявлСнного Ρ‚ΠΈΠΏΠ°. (Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ называСтся псСвдонимом Ρ‚ΠΈΠΏΠ°). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания шаблона псСвдонима, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠΎΠ².

Бинтаксис

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

identifier
Имя псСвдонима.

type
Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся псСвдоним.

ПсСвдоним Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ°.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° псСвдонима эквивалСнтна typedef ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ ΠΈΠ· c++ 03:

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с указатСлями Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для чтСния, Ρ‡Π΅ΠΌ эквивалСнтноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°:

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ typedef ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с шаблонами. Напротив, синтаксис псСвдонима Ρ‚ΠΈΠΏΠ° Π² C ++11 позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ псСвдонимов:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ²

ОбъявлСния typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ понятных ΠΈΠΌΠ΅Π½ для Ρ‚ΠΈΠΏΠΎΠ², ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² языкС ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ИмСна typedef ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

ΠŸΡ€ΠΈ объявлСнии Π² локальной области ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ имя typedef, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ объявлСнии Ρ‡Π»Π΅Π½Π° структуры Π»ΠΈΠ±ΠΎ объСдинСния Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области ΠΈΠ»ΠΈ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ спСцификатор Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя FlagType для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Ρ‡Π»Π΅Π½Π° структуры ΠΈΠ»ΠΈ Ρ‡Π»Π΅Π½Π° объСдинСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ:

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ FlagType воспринимаСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ ΠΊΠ°ΠΊ Π·Π°Π½ΠΎΠ²ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ объявлСниС нСдопустимо, ΠΊΠ°ΠΊ ΠΈ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ любой Ρ‚ΠΈΠΏ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ массивов. Имя typedef для Ρ‚ΠΈΠΏΠ° указатСля Π½Π° структуру ΠΈΠ»ΠΈ объСдинСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ опрСдСлСния Ρ‚ΠΈΠΏΠ° структуры ΠΈΠ»ΠΈ объСдинСния, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области видимости, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ИспользованиС typedef объявлСний состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ объявлСния Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ typedef для указания Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ объявлСнии, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ запятыми. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ Ρ‚ΠΈΠΏ DRAWF для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° int.

ПослС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹ΡˆΠ΅ typedef объявлСниС

Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

typedef часто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ с struct для объявлСния ΠΈ имСнования опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ²:

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ²

typedef ОбъявлСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ объявлСния Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΈ для ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

typedef НСвозмоТно ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ объявлСно ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли file2. H содСрТит

компилятор Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ·-Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ объявлСния ΠΈΠΌΠ΅Π½ΠΈ CHAR ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ распространяСтся Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° конструкции, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² Π² C++ ΠΈ C

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ объявлСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ объявлСния

Π’ C++ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ typedef ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ с class struct union enum ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами,, ΠΈ) Π±ΠΎΠ»Π΅Π΅ Π Π°Π·Π½Π°. Π₯отя ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° C объявлСния структуры Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ Π² typedef инструкции ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΠ½Π° Π½Π΅ прСдоставляСт прСимущСств для Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΊ это дСлаСтся Π² c.

Имя (синоним) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ послС class struct union прСфикса, ΠΈΠ»ΠΈ.

Имя Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ конструктора ΠΈΠ»ΠΈ дСструктора Π² объявлСнии класса.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, этот синтаксис Π½Π΅ прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования, создания ΠΈΠ»ΠΈ удалСния.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

8.6 – typedef ΠΈ псСвдонимы Ρ‚ΠΈΠΏΠΎΠ²

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово typedef

По соглашСнию ΠΈΠΌΠ΅Π½Π° typedef ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с использованиСм суффикса » _t «. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прСдставляСт собой Ρ‚ΠΈΠΏ, Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

ПослС опрСдСлСния имя typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ трСбуСтся Ρ‚ΠΈΠΏ. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ typedef Π² качСствС Ρ‚ΠΈΠΏΠ°:

typedef Π½Π΅ опрСдСляСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ typedef Π½Π΅ опрСдСляСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π‘ΠΊΠΎΡ€Π΅Π΅, ΠΎΠ½ просто создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (псСвдоним) для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. typedef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Ρƒ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ синтаксичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, Π½ΠΎ сСмантичСски бСссмыслСнны. НапримСр:

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ значСния псСвдонимов Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сСмантичСски Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ.

Π’ качСствС отступлСния.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости typedef

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько typedef Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· #include Π² Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ typedef

Однако Ρƒ typedef Π΅ΡΡ‚ΡŒ нСсколько синтаксичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС: имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°. Π§Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² Ρ‚Π°ΠΊΠΈΡ… случаях компилятор поТалуСтся.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, синтаксис typedef становится ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²Ρ‹ΠΌ ΠΏΡ€ΠΈ использовании Π±ΠΎΠ»Π΅Π΅ слоТных Ρ‚ΠΈΠΏΠΎΠ², особСнно ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π² ΡƒΡ€ΠΎΠΊΠ΅ Β«11.9 – Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ»):

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ typedef имя Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ( fcn_t ) скрыто Π² сСрСдинС опрСдСлСния, Ρ‡Ρ‚ΠΎ затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ опрСдСлСния.

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Ρ‚ΠΈΠΏΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ typedef Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ синтаксис, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ способ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ синтаксис называСтся псСвдонимом Ρ‚ΠΈΠΏΠ° (type alias).

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ typedef :

ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ псСвдоним Ρ‚ΠΈΠΏΠ°:

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Когда ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ псСвдонимы Ρ‚ΠΈΠΏΠΎΠ²?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ рассмотрСли, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ typedef ΠΈ псСвдонимы Ρ‚ΠΈΠΏΠΎΠ², Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

ИспользованиС псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² для кодирования, нСзависимого ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Одно ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… прСимущСств псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для скрытия Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, спСцифичных для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… int составляСт 2 Π±Π°ΠΉΡ‚Π°, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… – 4 Π±Π°ΠΉΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, нСзависимого ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, использованиС int для хранСния Π±ΠΎΠ»Π΅Π΅ 2 Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасным.

Π§Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ псСвдоним Ρ‚ΠΈΠΏΠ° прСобразуСтся Π² Ρ‚ΠΈΠΏ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, псСвдонимы Ρ‚ΠΈΠΏΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² сочСтании с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ прСпроцСссора:

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ std::int_fast16_t ΠΈ std::int_least32_t ) ΠΈ size_t (описанныС Π² ΡƒΡ€ΠΎΠΊΠ΅ Β«4.6 – ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ size_t Β») – Π½Π° самом Π΄Π΅Π»Π΅ псСвдонимы для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²!

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

ИспользованиС псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² для упрощСния слоТных Ρ‚ΠΈΠΏΠΎΠ²

Π₯отя Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с простыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΌ C++ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТными ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ для Π²Π²ΠΎΠ΄Π°. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π²ΠΎΠ΄ std::vector > Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ‚ΠΈΠΏ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ псСвдоним Ρ‚ΠΈΠΏΠ°:

ВСроятно, это Π»ΡƒΡ‡ΡˆΠ΅Π΅ использованиС псСвдонимов Ρ‚ΠΈΠΏΠΎΠ².

ИспользованиС псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.

НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом, Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число? БуквСнная ΠΎΡ†Π΅Π½ΠΊΠ°? ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… вопросов? Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ студСнта? Код ошибки? ΠšΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚! Π’ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния int ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ. Если Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚, Π³Π΄Π΅-Ρ‚ΠΎ сущСствуСт докумСнтация ΠΏΠΎ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ. Если Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сами.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ псСвдоним Ρ‚ΠΈΠΏΠ°:

ИспользованиС Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния testScore_t Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСста.

По Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, созданиС псСвдонима Ρ‚ΠΈΠΏΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для докумСнтирования Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ стоит усилий (вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ). Но Ссли Π²Ρ‹ ΡƒΠΆΠ΅ создали typedef ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ приятным Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ прСимущСством.

ИспользованиС псСвдонимов Ρ‚ΠΈΠΏΠΎΠ² для упрощСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΠ΄Π°

Π₯отя это каТСтся приятным прСимущСством, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ особСнно Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° псСвдонима Ρ‚ΠΈΠΏΠ° Π½Π° Ρ‚ΠΈΠΏ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ сСмСйства Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, цСлочислСнный Ρ‚ΠΈΠΏ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚)! Новый Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со сравнСниСм ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±Ρ‹Π»ΠΎ Ρƒ старого Ρ‚ΠΈΠΏΠ°. Если Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ваш ΠΊΠΎΠ΄ слСдуСт Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠœΠΈΠ½ΡƒΡΡ‹ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π₯отя псСвдонимы Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ вводят Π² ваш ΠΊΠΎΠ΄ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. Если это Π½Π΅ компСнсируСтся ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ прСимущСствами для удобочитаСмости ΠΈΠ»ΠΈ понимания, Ρ‚ΠΎΠ³Π΄Π° псСвдоним Ρ‚ΠΈΠΏΠ° приносит большС Π²Ρ€Π΅Π΄Π°, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρ‹.

ΠŸΠ»ΠΎΡ…ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ псСвдоним Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·ΡΡ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, std::string ) ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΡƒΠΌΠ½Ρ‹ΠΌΠΈ указатСлями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅) скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ€Π΅Π΄Π½Ρ‹ΠΌ для понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ этот Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ псСвдонимы Ρ‚ΠΈΠΏΠΎΠ² слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ явноС прСимущСство для Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ поддСрТиваСмости ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π² большСй стСпСни искусство, Ρ‡Π΅ΠΌ Π½Π°ΡƒΠΊΠ°. ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Ρ‚ΠΈΠΏΠΎΠ² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π² мСньшСм количСствС мСст.

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ псСвдонимы Ρ‚ΠΈΠΏΠΎΠ², Ссли ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ явноС прСимущСство для Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ поддСрТиваСмости ΠΊΠΎΠ΄Π°.

НСбольшой тСст

Вопрос 1

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ β„–60. ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Ρ‚ΠΈΠΏΠΎΠ²: typedef ΠΈ type alias

Обновл. 13 БСн 2021 |

На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим псСвдонимы Ρ‚ΠΈΠΏΠΎΠ² typedef ΠΈ type alias Π² языкС C++.

typedef

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово typedef позволяСт программисту ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ псСвдоним для любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ вмСсто фактичСского ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ typedef (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ псСвдоним Ρ‚ΠΈΠΏΠ°) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово typedef вмСстС с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся псСвдоним, Π° Π·Π°Ρ‚Π΅ΠΌ, собствСнно, сам псСвдоним. НапримСр:

typedef Π½Π΅ опрСдСляСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ просто псСвдоним (Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя) для ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π”Π°ΠΆΠ΅ Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла, ΠΎΠ½ΠΎ всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π² языкС C++:

typedef ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°

typedef ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ разборчивости ΠΊΠΎΠ΄Π°. ИмСна Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ char, int, long, double ΠΈ bool Ρ…ΠΎΡ€ΠΎΡˆΠΈ для описания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция, Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π½Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся Ρ†Π΅Π»ΠΎΠ΅ число, Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚? ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… вопросов? Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ учащСгося? Код ошибки? Π‘Π°ΠΌ int Π½ΠΈ ΠΎ Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

Π‘ использованиСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° testScore_t становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСста.

typedef ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ΄Π°

typedef Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±Π΅Π· внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² большоС количСство ΠΊΠΎΠ΄Π°. НапримСр, Ссли Π²Ρ‹ использовали Ρ‚ΠΈΠΏ short для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° учащСгося, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ long, Ρ‚ΠΎ Π²Π°ΠΌ придСтся ΠΏΡ€ΠΎΡˆΠ΅Ρ€ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ ΠΊΠΎΠ΄Π° для Π·Π°ΠΌΠ΅Π½Ρ‹ short Π½Π° long. И, вСроятно, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² short ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², Π° ΠΊΠ°ΠΊΠΎΠΉ β€” для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

typedef ΠΈ ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ большим прСимущСством typedef являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ спСцифичСскиС для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм) Π΄Π΅Ρ‚Π°Π»ΠΈ. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Ρ‚ΠΈΠΏ int Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°, Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” 4 Π±Π°ΠΉΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, использованиС Ρ‚ΠΈΠΏΠ° int для хранСния Π±ΠΎΠ»Π΅Π΅ 2 Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасным ΠΏΡ€ΠΈ написании кроссплатформСнного ΠΊΠΎΠ΄Π°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ char, short, int ΠΈ long Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ свой Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΎ для кроссплатформСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ довольно часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ typedef для опрСдСлСния псСвдонимов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΡ‚Π°Ρ…. НапримСр, int8_t β€” это 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ signed int, int16_t β€” это 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ signed int, Π° int32_t β€” это 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ signed int.

typedef ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ слоТного

Π₯отя ΠΌΡ‹ Π΄ΠΎ сих ΠΏΠΎΡ€ рассматривали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π² языкС C++ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *