„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich C-Code mit anonymen Strukturen oder Unions kompilieren?

Wie kann ich C-Code mit anonymen Strukturen oder Unions kompilieren?

Veröffentlicht am 08.11.2024
Durchsuche:793

How Can I Compile C Code with Anonymous Structs or Unions?

Kompilieren von C-Code mit anonymen Strukturen/Unions

Es stellt sich die Frage, wie man C-Code mit anonymen Strukturen oder Unions kompilieren kann, 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, muss das Compiler-Flag -fms-extensions verwendet werden.

Überarbeiteter Code mit -fms-extensions

#include 
#include 

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;
}

Mit dieser Änderung wird der Code erfolgreich kompiliert und die Behauptungen werden bestanden, wodurch bestätigt wird, dass die Adressen der Union-Mitglieder und die Strukturfelder gleichwertig sind.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3