Ich bin gerade beim durcharbeiten eines c programms und bin nun auf folgende Struktur gestossen: __PACKED_PRE struct __PACKED_POST RCX_UART__TEXT_OUT_CNF_DATA_Ttag /* text output confirmation data */ { /** Output text */ TLR_INT8 szText[UART__TEXT_OUT_MAX_LEN]; }; habe mir die Definition von __PACKED_PRE und __PACKED_POST gesucht: #define __PACKED_PRE __packed #define _PACKED_POST __attribute_ ((_packed_)) Ich verstehe diese Struktur nicht (Warum __PACKED_PRE und __PACKED_POST)
west wrote: > habe mir die Definition von __PACKED_PRE und __PACKED_POST gesucht: > > #define __PACKED_PRE __packed > #define _PACKED_POST __attribute_ ((_packed_)) > > Ich verstehe diese Struktur nicht (Warum __PACKED_PRE und __PACKED_POST) Kann es sein, dass da noch ein paar #if in der Nähe sind. Ansonsten: Da wirst du wohl dein Compilerhandbuch bemühen müssen. Das ist alles Nicht-Standard Zeugs. Einige Compiler won solche Nicht-Standard Zusatzangaben vor dem Datentyp sehen, andere hinter dem Datentyp wieder andere überhaupt als Abschluss der Definition. Ich schätze mal der Programmierer wollte sich hier eine gewisse Flexibilität einbauen um verschiedene Compiler befiedigen zu können. Der eine möchte es sehen als __packed struct xy { ... }; der andere will haben struct _attribute_ ((_packed_)) xy { ... }; und so hat er halt den kleinsten gemeinsamen Nenner gesucht und für sich definiert, dass er das immer als PRE struct POST xy { ... }; schreibt und per Makro PRE bzw POST auf den richtigen Wert bzw auf leer setzt. Das alles ist jetzt aber aus der holen Hand geraten. Such mal die Umgebung der PRE und POST Makros ab, ob die in einem #if eingeschlossen ist, dass compilerspezifisch gesetzt wird.
Hi Karl Heinz Stimmt, die defines sind compilerspezifisch Hab ich übersehen Vielen Dank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.