-  Creating portable names for hardware quantities:
typedef ___signed char      int8_t;
 typedef unsigned char    u_int8_t;
 typedef short             int16_t;
 typedef unsigned short  u_int16_t;
 typedef int               int32_t;
 typedef unsigned int    u_int32_t;
 typedef long              int64_t;
 typedef unsigned long   u_int64_t;
 
 
-  Creating abstract names for known hardware representatrions:
typedef u_int32_t in_addr_t;
 typedef u_int16_t in_port_t;
 
 
-  Emulating C++/Java class definitions:
typedef struct path path;
 struct path {
 /* [...] */
 }