Typedef is very useful for portable names, tag names (typedef struct foo Foo;) and keeping complicated (function) declarations readable (typedef int (*cmpfunc
typedef struct foo Foo;
typedef int (*cmpfunc
We use typedef to at work keep code platform independent. Like for example, we do something like
typedef unsigned char SHORT;
this makes code more readable and easy to port.