Typedef очень полезен для переносимых имен, имен тегов (typedef struct foo Foo;
) и хранения читаемых сложных (функций) объявлений (typedef int
(*cmpfunc)(const void *, const void *);
).
Но есть ли ситуации в C, когда typedef действительно действительнонужно?Там, где вы не можете сделать то же самое, просто записав производный тип.
Для пояснения: я имею в виду пользователей языка, а не разработчиков.Весь stdint.h
является хорошим примером второй категории.
Заключение
Спасибо за ваш вклад.Я думаю, что могу обобщить это как:
- Библиотеке C99 требуется typedef для реализации различных типов
(u)intN_t
. - В C89 вы действительно хотите использовать typedefs самостоятельно для создания подобного переносимоготипов.
- Возможно, вам понадобится typedef при использовании макроса
va_arg
, но я сомневаюсь, что вы встретите эти производные типы на практике.