Datorns minne är oftast anpassade till en gräns som motsvarar i storlek till systemet ordstorlek . På en hypotetisk 32 - bitars system , föreställa sig att detta ord storlek är fyra byte långt . I C- språket , kan du skapa strukturer som lagrar data . I syfte att anpassa dem till ordet storlek , kan C-kompilatorn lägga stoppning till strukturen . Du kan ta bort detta stoppningsmaterial genom att använda en förprocessor direktiv som talar om för den att anpassa uppgifter annorlunda . Saker du behöver
C Integrated Development Environment , såsom Eclipse CDT
C Compiler , ett sådant GCC
Visa fler instruktioner
1
Ladda C IDE genom klicka på dess programikon . När det öppnas , välj " Arkiv /Nytt /Project " och välj " C-projekt " för att skapa ett nytt C-projekt . En tom källkod filen visas i textredigeraren delen av IDE .
2
Skapa en " struct " heter " A " med standard minne anpassningen . Skriv följande uttalande på toppen av källkoden filen :
struct { } A ,
3
Lägg några data medlemmar till struct " A. " Genom att blanda heltal och typer karaktär , du ser till att kompilatorn kuddar strukturen . På ett 32 - bitars system , de första två int datatyper vardera tar upp fyra byte minne och är perfekt i linje som är . Men de två röding datatyper vardera tar upp en enda byte , och tillsammans upptar två byte data . Kompilatorn kommer pad detta med två bytes av skräp data för att anpassa de uppgifter ordentligt . Lägg följande uttalanden till struct " A " genom att placera dem mellan klammerparenteser efter ordet
int en " struct . " ;
Int b;
röding a ;
röding b;
4
Skapa en förprocessor direktiv som talar om för den att anpassa sig till den 1 - bytegräns , inte 4 - bytegräns :
# pragma pack ( push, 1 )
5
Skapa en annan struct , här en som heter " B " och placera den omedelbart efter förprocessor direktivet skrivet i föregående steg .
struct { } B ;
6
Fyll strukt " B " med samma datatyper som struct " A , " genom att skriva följande uttalanden inom klamrar av struct " B. " Dessa datatyper kommer att radas upp till närmaste byte , som råkar vara 10 ( fyra för varje int , en för varje röding ) . Det blir ingen utfyllnad i denna struktur
int a; .
Int b;
röding a ,
röding b;
7
Återställ anpassningen tillbaka till standardinställningen genom att skriva följande uttalande :
# pragma pack ( pop ) katalog