gcc
Rozszerzenia GNU C.
Szukaj…
Wprowadzenie
Kompilator GNU C zawiera kilka ciekawych funkcji, które nie są określone przez standardy C. Te rozszerzenia są szeroko stosowane w oprogramowaniu systemowym i są doskonałym narzędziem do optymalizacji wydajności.
Atrybut zapakowany
spakowany jest zmiennym atrybutem używanym ze strukturami i związkami w celu zminimalizowania wymagań pamięci.
#include <stdio.h>
struct foo {
int a;
char c;
};
struct __attribute__((__packed__))foo_packed {
int a;
char c;
};
int main()
{
printf("Size of foo: %d\n", sizeof(struct foo));
printf("Size of packed foo: %d\n", sizeof(struct foo_packed));
return 0;
}
W moim 64-bitowym systemie Linux
- Rozmiar struct foo = 8 bajtów
- Rozmiar struct foo_packed = 5 bajtów
Atrybut spakowany ogranicza wypełnianie struktury, które kompilator wykonuje w celu utrzymania wyrównania pamięci.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow