Speicherverbrauch von Bitfields



  • Hallo,

    gegeben sei folgendes Code-Fragment:

    enum T { someValue, otherValue, ... }; // maximal 8 Elemente, ohne Wert-Zuordnung
    
    struct S
    {
      T   type  :  3;
      int value : 29;
    }
    

    Die spannende Frage ist nun, ob sizeof(S) nur eine Größe von 4
    - haben muss
    - haben kann/sollte, aber nicht muss
    oder ob es unspezifiziert ist
    (unter der Annahme 1 Byte = 8 Bits und sizeof(int) == 4).

    Ich habe den Standard nun schon an den spannenden Stellen gewälzt (3.9, 9, 9.2, 9.6), aber konnte keinen Anhaltspunkt finden, dass soetwas überhaupt spezifiziert ist.

    Kennt jemand die entsprechende Stelle im Standard (falls es soeine überhaupt gibt)?

    Vielen Dank & Gruß



  • Hallo,
    weder Typ noch Größe für die Speicherung von Bitfeldern sind spezifiziert. Insofern kannst du nicht davon ausgehen, dass sizeof(S) auf allen Compilern gleich ist. Ich würde aber mal behaupten, dass sizeof(S) auf jedem 32-bit System mit jedem gängigen Compiler 4 liefert.


Log in to reply