Требуется ли typedef в C?

Typedef очень полезен для переносимых имен, имен тегов ( typedef struct foo Foo; ) и сохранение сложных объявлений (функций) для чтения ( typedef int (* cmpfunc) (const void *, const void *); ).

Но есть ли в C ситуации, когда typedef действительно нужен? Если вы не можете добиться того же, просто выписав производный тип.

Чтобы немного уточнить: я имею в виду пользователей языка, а не разработчиков. Весь stdint.h является хорошим примером второй категории.

Заключение

Спасибо за ваш вклад. Я думаю, что могу резюмировать это так:

  • Библиотеке C99 требуется typedef для реализации различных типов (u) intN_t .
  • На C89 вы действительно хотите самостоятельно использовать typedef для создания подобных переносимых типов.
  • Вам может потребоваться typedef при использовании макроса va_arg , но я сомневаюсь, что вы встретите эти производные типы на практике.
13
задан schot 30 September 2010 в 20:10
поделиться