Whats the difference between these? they all compile. struct xy { int x; int y; }; struct { int x; int y; } xy2; typedef struct { int x; int y; } xy3; typedef struct xy4 { int x; int y; };