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 !
}