gcc
Расширения GNU C
Поиск…
Вступление
Компилятор GNU C поставляется с некоторыми классными функциями, которые не определены стандартами C. Эти расширения широко используются в системном программном обеспечении и являются отличным инструментом для оптимизации производительности.
Атрибут упакован
упакованный - это переменный атрибут, который используется со структурами и объединениями, чтобы минимизировать требования к памяти.
#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;
}
На моем 64-битном Linux,
- Размер struct foo = 8 байт
- Размер struct foo_packed = 5 байт
упакованный атрибут препятствует заполнению структуры, которую выполняет компилятор для поддержания выравнивания памяти.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow