#pragma pack

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Pragma-Direktiven (Übersicht) - Index

Syntax (siehe Pseudogrammatik)

#pragma pack([{push | pop}[,]] [bezeichner[,]] [n])

Beschreibung

Die Direktive #pragma pack(n) ist mit der Verwendung der Direktive #pragma option mit der Compiler-Option -a identisch. n ist die Byte-Ausrichtung, die festlegt, wie der Compiler Daten im Speicher ausrichtet. Weitere Informationen hierzu finden Sie unter Compiler-Option -a. #pragma pack kann auch mit den Argumenten push und pop verwendet werden. Dadurch erhalten Sie dieselbe Funktionalität wie mit der Direktive #pragma option zusammen mit den Argumenten push und pop.

Die folgende Tabelle vergleicht #pragma pack mit #pragma option.

#pragma pack #pragma option

#pragma pack(n)

#pragma option -an

#pragma pack(push, n)

#pragma option push -an

#pragma pack(pop)

#pragma option pop


Die Direktive #pragma pack unterstützt auch ein Bezeichnerargument, das zusammen mit push und pop verwendet werden muss.

#pragma pack ohne Argumente

#pragma pack()

Mit #pragma pack ohne Argumente wird die Paketgröße auf die Startausrichtung –aX (Vorgabewert: 8) gesetzt. Die Startausrichtung –aX ist die Ausrichtung am Beginn der Compilierung, NACHDEM alle Befehlszeilenoptionen ausgeführt wurden.

#pragma pack mit einem Wert für n

#pragma pack(8)

Mit #pragma pack und einem Wert für n wird die aktuelle Ausrichtung auf n gesetzt. Gültige Ausrichtungen für n sind: 1, 2, 4, 8 und 16.

#pragma pack mit push

#pragma pack(push)

Mit #pragma pack und push wird die aktuelle Ausrichtung auf einen internen Ausrichtungsstack gestellt.

#pragma pack mit push, Bezeichner

#pragma pack(push, ident)

Mit #pragma pack und push plus einem Bezeichner wird die auf einen Stack gestellte Ausrichtung einem Bezeichner zugewiesen.

#pragma pack mit push und n

#pragma pack(push, 8)
#pragma pack(push, ident, 8)

Mit #pragma pack und push plus einem Wert für 'n' wird pragma pack oder pragma pack push bezeichner ausgeführt und danach die aktuelle Ausrichtung auf 'n' gesetzt.

#pragma pack mit pop

#pragma pack(pop)

Mit #pragma pack und pop wird der Ausrichtungsstack geändert und die Ausrichtung auf die letzte in den Stack gestellte Ausrichtung gesetzt. Wenn für pop kein zugehöriges push vorhanden ist, wird der gesamte Ausrichtungsstack geändert, eine Warnung ausgegeben und die Ausrichtung auf die Startausrichtung -aX zurückgesetzt.

#pragma pack mit pop, Bezeichner

#pragma pop(pop, ident)

Mit #pragma pack und pop plus einem Bezeichner wird der Stack geändert, bis der Bezeichner gefunden wird und die Ausrichtung auf die mit der zugehörigen Direktive #pragma pack(push, bezeichner) in den Stack gestellte Ausrichtung gesetzt. Wenn für pop plus Bezeichner kein zugehöriges push plus Bezeichner vorhanden ist, wird der gesamte Ausrichtungsstack geändert und eine Warnung ausgegeben.

W8083: Pragma pack pop ohne entsprechendes pack push

Die Ausrichtung wird anschließend auf die Startausrichtung -aX zurückgesetzt.

#pragma pack mit pop und n

#pragma pack(pop, 8)
#pragma pack(pop, ident, 8)

Mit #pragma pack und pop plus einem Wert für 'n' wird pragma pack pop oder pragma pack pop bezeichner ausgeführt. Danach wird die Ausrichtung auf 'n' gesetzt, es sei denn, es wurde kein zugehöriges push gefunden. In diesem Fall wird 'n' ignoriert, eine Warnung ausgegeben und die Ausrichtung auf die Startausrichtung -aX zurückgesetzt.

Fehlerbedingungen

Die Angabe von 'Bezeichner' ohne push oder pop führt zu einem Fehler.

Die Angabe einer anderen Ausrichtung als 1, 2, 4, 8, 16 führt zu einem Fehler.

Warnbedingungen

Die Verwendung von #pragma pop ohne zugehöriges push führt zu einer Warnung.