#c #typedef #union
typedef union { char word[16]; uint32_t chunk[4]; uint64_t big_chunk[2]; } Word, *PWord; // <-- Что означают эти два имени?
Ответы
Ответ 1
Да хоть с десятью именами. Как и [почти] любое объявление в С, typedef-объявление может объявлять несколько идентификаторов сразу const int a, *b, *const *c, d[5], e(void); // эквивалентно const int a; const int *b; const int *const *c; const int d[5]; const int e(void); Точно так же typedef int a, *b, *const *c, d[5], e(void); // эквивалентно typedef int a; typedef int *b; typedef int *const *c; typedef int d[5]; typedef int e(void); Именно это и используется в вашем объявлении. То, что в объявлении фигурирует union, тут никакой принципиальной роли не играет. Если бы у вашего union был указан тэг (скажем, W), то можно было разбить ваше объявление на три отдельных объявления union W { char word[16]; uint32_t chunk[4]; uint64_t big_chunk[2]; }; typedef union W Word; typedef union W *PWord;Ответ 2
Объявлены: Word - тип объединения, PWord - тип указателя на объединение. Вас это интересовало?
Комментариев нет:
Отправить комментарий