C's type system is generally by name ... e.g., int * and short* are different types even if int and short have the same representation, and struct foo { int x;} and struct bar { int x;} are different types even though they always have the same representation. share|improve this answer edited Mar 17 '11 at 6:49