C-Code mit anonymen Strukturen und Unions kompilieren
Bei der Arbeit mit anonymen Strukturen oder Unions in C ist die Syntax unkompliziert und ermöglicht den Zugriff Mitglieder mögen Arrays. Beim Versuch, diese Funktionalität in C mithilfe von GCC zu replizieren, kann es jedoch zu Kompilierungsfehlern kommen.
Um in C eine anonyme Struktur oder Union zu definieren, ist es notwendig, sie innerhalb einer übergeordneten Struktur oder Union zu deklarieren. Standardmäßig bietet GCC jedoch keine Unterstützung für den Zugriff auf anonyme Mitglieder als Arrays.
Um das gewünschte Verhalten zu aktivieren, sollte das Compiler-Flag -fms-extensions verwendet werden. Dieses Flag aktiviert Microsoft Visual C-Kompatibilitätserweiterungen, einschließlich der Möglichkeit, auf anonyme Struktur- und Union-Mitglieder als Arrays zuzugreifen.
Wenn das Flag -fms-extensions aktiviert ist, kann der in der Frage angegebene Codeausschnitt in C mit verwendet werden GCC, und die folgenden Behauptungen gelten:
assert(&v.xyz[0] == &v.x); assert(&v.xyz[1] == &v.y); assert(&v.xyz[2] == &v.z);
Das obige ist der detaillierte Inhalt vonWie greife ich mit GCC auf anonyme Struktur- und Union-Mitglieder als Arrays in C zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!