Typedef is very useful for portable names, tag names (typedef struct foo Foo;) and
keeping complicated (function) declarations readable (typedef int
(*cmpfunc
To me, typedef provides abstraction. It keeps my code clean and very easy to understand. You can live without typedef just like you can live without all high level languages and sticking with assembly or machine language.