из Википедии:
«K & R утверждает, что есть две причины для использования typedef. Во-первых ... Во-вторых, typedef может облегчить понимание сложной декларации».
Вот пример второй причины использования typedef, упрощающего сложные типы (сложный тип взят из K & R "Второе издание языка программирования C, стр. 136).
char (*(*x([])())
x - функция, возвращающая указатель на массив [] указателя на функцию, возвращающую символ.
Мы можем сделать вышеуказанное объявление понятным, используя typedefs. Пожалуйста, смотрите пример ниже.
typedef char (*pfType)(); // pf is the type of pointer to function returning
// char
typedef pfType pArrType[2]; // pArr is the type of array of pointers to
// functions returning char
char charf()
{ return('b');
}
pArrType pArr={charf,charf};
pfType *FinalF() // f is a function returning pointer to array of
// pointer to function returning char
{
return(pArr);
}