Почему можно объявить структуру и неструктуру с одинаковыми именами?
По всей видимости,
По причинам, дошедшим до предыстории C, возможно объявить структуру и неструктуру с одинаковыми именами в одной и той же области видимости. - (Бьярне Страуструп - Язык программирования C ++. 4-е издание)
Например:
struct Ambig {};
// the struct must be referred to with the prefix struct
void Ambig(struct Ambig* buf) {}
Мне просто интересно, какова была первоначальная причина? Без понимания это кажется примером плохого языкового дизайна, который вызывает двусмысленность и сбивает с толку.