Sök…


Introduktion

GNU C-kompilatorn har några coola funktioner som inte specificeras av C-standarderna. Dessa tillägg används kraftigt i systemprogramvara och är ett bra verktyg för prestandaoptimering.

Attribut packat

packad är ett variabelt attribut som används med strukturer och fackföreningar för att minimera minneskraven.

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

På min 64-bitars Linux,

  • Strukturens storlek = 8 byte
  • Storlek på strukturen foo_packed = 5 byte

packade attribut bromsar strukturens stoppning som kompilatorn utför för att upprätthålla minnesinställningen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow