struct typeA { int a; }; typedef struct typeA newTypeName; int main(int argc, char *argv[]) { struct typeA x; struct typeA y; newTypeName z; x = y; // Of cource OK, they are same type x = z; // OK also, so typedef is NOT a new type ! }