Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come rimuovere Imbottitura da una struttura C

Memoria del computer di solito è allineato a un limite di dimensioni uguali alla dimensione della parola di sistema . Su un ipotetico sistema a 32 bit , immaginate che questa dimensione della parola è lunga quattro byte . Nel linguaggio C , è possibile creare strutture che memorizzano i dati . Al fine di allinearli alla dimensione della parola , il compilatore C può aggiungere imbottitura alla struttura . È possibile rimuovere questa imbottitura utilizzando una direttiva del preprocessore che dice di allineare i dati in modo diverso . Cose che ti serviranno
C Ambiente di sviluppo integrato , come ad esempio Eclipse CDT
C Compiler , un tale GCC
Show More Istruzioni
1

Caricare il C IDE cliccando sulla relativa icona del programma . Quando si apre, selezionare " File /Nuovo /Progetto" e scegliere " Progetto C " per creare un nuovo progetto C . Un file di codice sorgente di vuoto viene visualizzata nell'editor di testo parte dell'IDE.
2

creare una " struttura " di nome " A" con l'allineamento di memoria di default . Scrivi la seguente istruzione all'inizio del file di codice sorgente :

struct { } A;
3

Aggiungi alcuni membri dati per la struct "A. " Con l' intero missaggio e tipi di carattere , si sta assicurando che il compilatore riempimenti alla struttura . Su un sistema a 32 bit , i primi due tipi di dati int ciascuna occupano quattro byte di memoria e sono perfettamente allineati come è. Tuttavia, i due tipi di dati char occupano ciascuna un singolo byte , e insieme occupano due byte di dati . Il compilatore pad presente con due byte di dati spazzatura per allineare i dati in modo corretto. Aggiungere le seguenti dichiarazioni a struct " A" inserendoli tra le parentesi graffe dopo la parola

int a "struct ". ;

Int b ;

char a ;

char b ;
4

Creare una direttiva per il preprocessore che dice di allineare al limite di 1 byte , non il limite di 4 byte :

# pragma confezione (push , 1 ) economici 5

Creare un'altra struct , questo il nome di " B ", e metterlo subito dopo la direttiva del preprocessore scritto nel passaggio precedente .

struct { } B ;
6

Fill struct " B ", con gli stessi tipi di dati come struct "A ", scrivendo le seguenti dichiarazioni all'interno della parentesi graffe di struct "B. " Questi tipi di dati si allineano al byte più vicino , che risulta essere 10 ( quattro per ogni int , uno per ogni carattere) . Non ci sarà nessun imbottitura in questa struttura

int a; .

Int b ;

char a ;

char b ;

7

Ripristina l'allineamento al suo valore predefinito , scrivendo la seguente dichiarazione :

# pragma pack ( pop ) per

 

Programmazione © www.354353.com