C-Code mit anonymen Strukturen/Unions kompilieren
Es stellt sich die Frage, wie man C-Code mit anonymen Strukturen oder Unions kompiliert, wie in gezeigt C mit anonymen Feldern unter Verwendung von Gewerkschaften. In C führt der Versuch, eine ähnliche Struktur mithilfe benannter Strukturen zu erstellen, die eine anonyme Union enthalten, zu Kompilierungsfehlern.
Die Fehlermeldungen weisen darauf hin, dass die Felder „anonyme Union“ und „Struktur“ nicht in der Strukturdeklaration deklariert sind. Um diese Funktion in C zu aktivieren, ist es notwendig, das Compiler-Flag -fms-extensions zu verwenden.
Überarbeiteter Code mit -fms-extensions
<code class="c">#include <stdio.h> #include <assert.h> typedef struct { union { float x, y, z; } xyz; } Vector3; int main() { Vector3 v; assert(&v.xyz.x == &v.x); assert(&v.xyz.y == &v.y); assert(&v.xyz.z == &v.z); return 0; }</code>
Damit Durch die Änderung wird der Code erfolgreich kompiliert und die Behauptungen werden bestanden, wodurch bestätigt wird, dass die Adressen der Gewerkschaftsmitglieder und die Strukturfelder gleichwertig sind.
Das obige ist der detaillierte Inhalt vonWie kann ich C-Code mit anonymen Strukturen oder Unions kompilieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!