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