GCC hat eine Option, -fms-extensions
, die die Verwendung von anonymen Strukturelementen erlaubt:
Dies ermöglicht den Zugriff auf ein x
Element in struct b
, indem einfach b.x
verwendet wird. Dies ist sehr nützlich, aber es scheint, dass es eine Microsoft-Erweiterung ist, die von GCC emuliert wird.
Wird die Verwendung dieser Option meinen Code weniger portabel machen oder wird er als "sicher" angesehen?
Wenn man bedenkt, dass in der Ausgabe 2011 des Standards (C11) ein Merkmal hinzugefügt wurde, das als anonyme Strukturen und Vereinigungen gleichwertig erscheint, würde ich sagen, dass es keine so schlechte Idee ist, diese Funktion zu verwenden. MS-Compiler unterstützen es, GCC- und "GNU C" -kompatible Compiler unterstützen es, wenn es dazu aufgefordert wird, und neue Compiler, die dem modernen Standard entsprechen, unterstützen es.
Das Flag -fms-extensions wird für "Akzeptieren einiger Nicht-Standard-Konstrukte, die in Microsoft-Headerdateien verwendet werden" verwendet. GCC ist mächtig, weil es für verschiedene Standards geschaffen wurde, daher denke ich nicht, dass es eine schlechte Idee ist, dies unter den richtigen Umständen zu verwenden.