Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako odobrať Padding zo štruktúry C

Pamäť počítača je zvyčajne zarovnané na hranice rovnakej veľkosti na veľkosti systémovej slová . Na hypotetickom 32 - bitovom systéme , predstavte si , že táto veľkosť slovo štyri bajty . V jazyku C , môžete vytvoriť štruktúry , ktoré ukladajú dáta . , Za účelom prispôsobenia veľkosti textu , C kompilátor môže pridať výplň do štruktúry . Môžete odstrániť túto polstrovanie pomocou direktívy preprocesoru , ktorý ju povie , aby dáta zarovnať inak . Veci , ktoré budete potrebovať
C integrované vývojové prostredie , ako je Eclipse CDT
C Compiler , ako GCC
Zobraziť ďalšie inštrukcie Cestuj 1

Vložte C IDE podľa kliknutím na jeho ikonu programu . Keď sa otvorí , vyberte " File /New /Project " a zvoľte " C Project " vytvoriť nový C projekt . Prázdny zdrojový kód súboru sa zobrazí v textovom editore časti IDE .
2

Vytvoriť " struct " s názvom " A " s zarovnanie predvolenej pamäte . Napíšte nasledujúci príkaz na začiatok súboru zdrojového kódu :

struct { } A ;
3

Pridať niektoré dátové členmi struct " A. " Zmiešaním typy integer a znak , ktorý zabezpečí, že kompilátor podložky štruktúru . Na 32 - bitovom systéme , prvé dva dátové typy int každý trvať až štyri bajty pamäti a sú dokonale zladené ako je . Avšak , dva dátové typy char každý trvať až jeden byte , a dohromady zaberajú dva bajty dát . Kompilátor bude pad to s dvoma bajty junk dáta správne zarovnať dáta . Pridajte nasledujúce príkazy struct " A " umiestnením je medzi zloženými zátvorkami za slovom

pravý na " struct . " ; ClipArt

int b ;

char ;

char b ;
4

Vytvorte direktívy preprocesoru , ktorý ju hovorí , zarovnať na hranici 1 -byte , nie hranice 4 -byte :

# pragma pack ( tlak , 1 )
5

Vytvorte ďalšie struct , tentoraz s názvom " B , " a okamžite umiestniť ho po direktíva preprocesoru napísané v predchádzajúcom kroku .

struct { } B ,
6

Vyplňte struct " B " s rovnakými dátovými typmi ako struct " A " , tým , že píše nasledujúce príkazy v zložených zátvorkách struct " B. " Tieto dátové typy sa zoradia na najbližší bytu , ktorý sa stane byť 10 ( štyri pre každú int , jeden pre každý char ) . Tam bude žiadna vypchávka v tejto štruktúre

int ; .

Int b ;

char ;

char b ;

7

Obnoviť zarovnanie späť do svojej východiskovej písaním nasledujúce vyhlásenie :

# pragma pack ( pop )

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené