C11 obsługuje struktury anonimowych, jak w przykładzie:Dlaczego C++ 11 nie obsługuje anonimowych struktur, a C11 to robi?
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
Zasadniczo, elementy takiego struct
są traktowane tak, jakby były członkami otaczania struct
lub union
(rekurencyjnie, jeśli struktura otaczająca był się anonimowy).
Co było uzasadnieniem dla C++ 11, nie uwzględniając anonimowych struktur? Są one niezbyt użyteczne (głównie w związkach, aby wyeliminować wpisanie identyfikatora dla struct
), z pewnością. Ale wydają się one wystarczająco oczywistym dodatkiem do specyfikacji (i już zaimplementowanym przez wiele kompilatorów), które z pewnością musiały zostać omówione, przynajmniej w celu zachowania kompatybilności ze standardem C11. Dlaczego więc nie zostały dodane?
Nie zgadzam się z głosowaniem, że to pytanie nie jest konstruktywne. Miękkie pytania też są w porządku. – GManNickG
__Praktycznie _ większość kompilatorów C++ 11 obsługuje również anonimowe struktury. Używałem ich zarówno w MSVC++ (od zawsze), jak iz kompilatorem C++ 11 firmy Apple. – bobobobo
MinGW obsługuje również anonimowe struktury/związki. –