Dlaczego można zadeklarować strukturę i niestrukturę o tej samej nazwie?
Widocznie,
Z powodów, które sięgają do prehistorii C, możliwe jest zadeklarowanie struktury i niestruktury o tej samej nazwie w tym samym zakresie. - (Bjarne Stroustrup - język programowania C ++. 4. edycja)
Na przykład:
struct Ambig {};
// the struct must be referred to with the prefix struct
void Ambig(struct Ambig* buf) {}
Ciekawe, jaki był początkowy powód? Bez zrozumienia wydaje się przykładem złego projektowania języka, co powoduje dwuznaczność i jest mylące.