sizeof problem



  • Hallo beisammen,

    habe ein Problem, habe mir folgende struktur angelegt:

    struct dat_header{
    char ident[2];
    long length;
    long reserviert;
    long beg_pixeldat;
    }DAT_HEADER;

    füre nun folgenden befehl aus:

    test =sizeof (dat_header);

    test hat nun den wert 16?

    müsste doch eigentlich 14 sein ?

    danke im **voraus

    helda**



  • Probiere mal den char ans Ende zu schieben. Wegen dem Alignment macht der Compiler sonst einen Zwischenraum.
    Generell sollte man immer die großen Daten zuerst und die kleinen am Ende schreiben.



  • funktioniert leider nicht,
    möchte mit dem code eigentlich den header einer Bitmap auslesen,und die ersten 2 bytes sind die identifikation, deswegen den char[2] am anfang.



  • funktioniert leider nicht,
    möchte mit dem code eigentlich den header einer Bitmap auslesen,und die ersten 2 bytes sind die identifikation, deswegen den char[2] am anfang.



  • Probier mal #pragma pack (2) Dann ist das Alignment auf 2 Bytes gesetzt. Es gibt dafür auch schon Headerfiles:

    #include <pshpack2.h>
    struct ...
    #include <poppack.h>
    

    Den #pragma pack (2) muß man nach dem Struct wieder zurücksetzen, sonst gilt er für alle folgenden.



  • Danke schön hat geklappt


Anmelden zum Antworten