Zoeken…


Invoering

De GNU C-compiler wordt geleverd met enkele coole functies die niet zijn gespecificeerd door de C-normen. Deze extensies worden veel gebruikt in systeemsoftware en zijn een geweldig hulpmiddel voor het optimaliseren van prestaties.

Attribuut verpakt

verpakt is een variabel kenmerk dat wordt gebruikt met structuren en unies om de geheugenvereisten te minimaliseren.

#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;
}

Op mijn 64 bit Linux,

  • Grootte van struct foo = 8 bytes
  • Grootte van struct foo_packed = 5 bytes

verpakt kenmerk beperkt de structuuropvulling die de compiler uitvoert om geheugenuitlijning te behouden.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow