Computer -Speicher ist in der Regel zu einer Grenze gleich in der Größe des Systems Wort Größe ausgerichtet . Bei einem hypothetischen 32 -Bit-System vor, dass diese Wortbreite vier Bytes lang ist. In der C-Sprache , können Sie Strukturen schaffen , die Daten speichern . Um sie zu der Wortgröße ausrichten kann der C -Compiler Polsterung der Struktur hinzuzufügen. Sie können diese Polsterung mit einem Präprozessordirektive dass es um Daten anders ausrichten erzählt entfernen. Things You
C Integrated Development Environment , wie Eclipse CDT
C Compiler brauchen , zeigen eine solche GCC
Weitere Anweisungen
1
Laden Sie die IDE von C Klick auf das Programmsymbol . Wenn sie geöffnet wird , wählen Sie " File /New /Project" und wählen Sie " C Project" , um eine neue C -Projekt zu erstellen . Eine leere Quellcode -Datei wird im Texteditor Teil der IDE .
2
Erstellen Sie eine " Struktur " mit dem Namen " A" mit dem Standard- Speicher Ausrichtung . Schreiben Sie die folgende Anweisung am Anfang der Quellcodedatei :
struct { } A;
3
Fügen Sie einige Daten Mitglieder der struct " A. " Durch das Mischen von Integer-und Charakter-Typen , sind Sie sicher, dass der Compiler die Struktur Pads. Auf einem 32 -Bit-System , die ersten beiden int Datentypen jeweils bis vier Byte Speicherplatz und sind perfekt aufeinander abgestimmt , wie ist. Allerdings sind die beiden Datentypen char nehmen jeweils ein einzelnes Byte , und gemeinsam besetzen zwei bytes of data. Der Compiler wird dieses Pad mit zwei Bytes von Datenmüll , um die Daten richtig auszurichten . Fügen Sie die folgenden Aussagen auf struct "A" , indem sie zwischen den geschweiften Klammern nach dem Wort
int a " -Struktur. ";
Int b;
char a ;
char b;
4
erstellen Präprozessordirektive , die es auf der 1- Byte-Grenze , nicht die 4-Byte- Grenze ausgerichtet sagt :
# pragma Packung (push , 1 )
5
erstellen Sie eine weitere Struktur , diesmal mit dem Namen " B ", und legen Sie sie sofort nach dem Präprozessordirektive im vorherigen Schritt geschrieben.
struct { } B;
6
struct "B" mit den gleichen Datentypen wie struct Fill " A ", indem Sie die folgenden Anweisungen innerhalb der geschweiften Klammern von struct "B. " Diese Datentypen werden Line-Up auf das nächste Byte , die bis 10 ( vier für jede int , eine für jeden char) werden passiert. Es wird keine Polsterung in dieser Struktur sein
int a; .
Int b;
char a;
char b;
< br > 7
zurücksetzen die Ausrichtung zurück auf den Standardwert , indem Sie die folgende Anweisung :
# pragma pack (pop)