Structure packing (#pragma pack/#pragma unpack) [V1.05 or later] |
This specifies packing of a structure.
Packing is performed for a structure that is declared at or after the location where #pragma pack was specified. The number of alignment for a structure member is set to 1. |
Packing is not performed for a structure that is declared at or after the location where #pragma unpack was specified. |
If the -pack option is specified simultaneously with #pragma unpack, #pragma unpack takes priority. |
#pragma pack struct s1 { char a; int b; // The number of alignment is set to 1. } st1; #pragma unpack struct s2 { char a; int b; // The number of alignment is not set to 1. } st2; |
Correct operation is not guaranteed if there is a mixture of C source files with different packing specifications for the same structure. |
Correct operation is not guaranteed if a structure, union, or address of those members whose alignment condition has been changed from two bytes to one byte by #pragma pack is passed as an argument of a standard library function. |
Correct operation is not guaranteed if the address of a structure or union member whose alignment condition has been changed from two bytes to one byte by #pragma pack is passed to a pointer whose type has two bytes as the alignment condition and indirect reference to the pointer is performed. |