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
, но я сомневаюсь, что вы на практике столкнетесь с этими производными типами.