In GCC, you can use __attribute__((packed))
. These days GCC supports #pragma pack
, too.
Examples:
attribute
method:#include <stdio.h> struct packed { char a; int b; } __attribute__((packed)); struct not_packed { char a; int b; }; int main(void) { printf("Packed: %zu\n", sizeof(struct packed)); printf("Not Packed: %zu\n", sizeof(struct not_packed)); return 0; }
Output:
$ make example && ./example cc example.c -o example Packed: 5 Not Packed: 8
pragma pack
method:#include <stdio.h> #pragma pack(1) struct packed { char a; int b; }; #pragma pack() struct not_packed { char a; int b; }; int main(void) { printf("Packed: %zu\n", sizeof(struct packed)); printf("Not Packed: %zu\n", sizeof(struct not_packed)); return 0; }
Output:
$ make example && ./example cc example.c -o example Packed: 5 Not Packed: 8