If declarations start popping everywhere, it makes it a lot harder to change them or check if they make sense. OK a structure can only change name (which is bad enough), but if we'd extend this to e.g. prototypes it's diving into madness if that function signature becomes incorrect.
I don't understand this at all. Prototypes are irrelevant, I don't understand what you mean. Please explain what you mean about the struct name changing being bad enough. You would get a compile error.