Computer geheugen wordt meestal afgestemd op een grens in omvang gelijk aan het systeem woordgrootte . Op een hypothetische 32 - bits systeem , stel dat dit woord grootte is vier bytes lang . In de taal C , kunt u structuren die winkel gegevens te maken . Om ze af te stemmen op de grootte van het woord , kan de C -compiler opvulling toe te voegen aan de structuur . U kunt deze opvulling te verwijderen met behulp van een preprocessor richtlijn die vertelt het aan gegevens anders te lijnen . Wat je C Integrated Development Environment , zoals Eclipse CDT C Compiler Noodzaak , zo'n GCC Toon Meer Aanwijzingen 1 Laad de C IDE door klikken op het pictogram van het programma . Wanneer het wordt geopend , selecteert u " File /New /Project" en kies " C Project " om een nieuwe C -project te creëren . Een lege broncode bestand in de teksteditor gedeelte van de IDE . Kopen van 2 Maak een " struct " met de naam " A " met de standaard geheugen uitlijning . Zet de volgende uitspraak aan de bovenkant van de broncode bestand : struct { } A ; 3 Voeg wat data leden om de struct " A. " Door het mengen van integer en karakter types , bent u ervoor te zorgen dat de compiler pads de structuur . Op een 32 - bits systeem , de eerste twee int datatypes nemen elk tot vier bytes van het geheugen en worden perfect uitgelijnd zoals het is. De twee char data types nemen elk een byte , en bezet samen twee bytes van data . De compiler zal kussen dit uit met twee bytes junk gegevens om de gegevens goed af te stemmen . Voeg de volgende verklaringen aan struct " A " door ze te plaatsen tussen de accolades achter het woord int een " struct . " ; Int b ; char a ; char b ; 4 Maak een preprocessor richtlijn die vertelt het aan te passen aan de 1 - byte grens , niet de 4 - byte grens : # pragma pack ( push , 1 ) 5 Maak een andere structuur , deze ene genaamd " B ", en plaats het direct na de preprocessor richtlijn geschreven in de vorige stap . struct { } B ; 6 Vul struct " B " met dezelfde typen gegevens als struct " A ", door het schrijven van de volgende verklaringen binnen de accolades van struct " B. " Deze data types zullen op een lijn naar de dichtstbijzijnde byte , die toevallig 10 ( vier voor elk int , een voor elke char ) . Int b ; ; char a ; char b ; < br Er worden geen opvulling in deze structuur int een te zijn . > 7 Reset de aanpassing terug op de standaardinstellingen door het schrijven van de volgende verklaring : # pragma pack ( pop ) op
|