Warum tut Polsterung haben, um eine Potenz von zwei ist?

Ich mache einige Beispiel-Programme zu erkunden, C und würde gerne wissen, warum die Struktur, die Polsterung kann getan werden, in der Kraft der zwei nur.

#include <stdio.h>

#pragma pack(push, 3)

union aaaa
{

   struct bbb
   {
      int a;
      double b;
      char c;
   }xx;

   float f;
};

#pragma pack(pop)

int main()
{

printf("\n Size: %d", sizeof(union aaaa));

return 0;
}

Beim kompilieren

warning: alignment must be a small power of two, not 3 [-Wpragmas]
warning: #pragma pack (pop) encountered without matching #pragma pack (push) [-Wpragmas]

Scheint es, #pragma keine Auswirkungen. Die Ausgabe ist 24 nur. ich.e 4 byte ausgerichtet.

InformationsquelleAutor Jeyaram | 2012-07-26
Schreibe einen Kommentar