typedef は新しい型を作るのではなく、 型の別名を定義するだけです。 つまり、
typedef unsigned int u_int ; unsigned int ui1 ; u_int ui2 ; : ui1 = ui2 ;
などとしても、コンパイラは型チェックしてくれません。 (warning なんて出ない。)
(あたりまえだろうって? チェックして欲しいことだってあるものなのよー)