“Conocimientos Programación>C /C + + Programming

Cómo quitar el relleno de una estructura C

2011/12/29
memoria de computadora está generalmente alineado con un límite igual en tamaño al sistema de tamaño de palabra . En un sistema de 32 bits hipotética , imagina que este tamaño de palabra es de cuatro bytes de longitud. En el lenguaje C , se pueden crear estructuras que almacenan datos . Con el fin de alinearlos con el tamaño de la palabra , el compilador de C puede agregar relleno a la estructura. Puede eliminar este relleno mediante una directiva de preprocesador que le indica que debe alinear los datos de manera diferente . Cosas que necesitará
C Entorno de desarrollo integrado , como Eclipse CDT
C Compiler , tal GCC
Mostrar más instrucciones
1

Cargue el IDE de C al hacer clic en el icono del programa . Cuando se abre, seleccione " Archivo /Nuevo /Proyecto " y selecciona "Proyecto C " para crear un nuevo proyecto C . Un archivo de código fuente en blanco en la parte de edición de texto de la IDE.
2

Crear un " struct " llamado "A" con la alineación predeterminada de la memoria . Escriba la siguiente instrucción al principio del archivo de código fuente:

struct { } A;
3

Añada algunos miembros de datos a la estructura "A" Al mezclar enteros y tipos de caracteres , que se aseguran de que el compilador rellena la estructura. En un sistema de 32 bits , los dos primeros tipos de datos int cada ocupan cuatro bytes de memoria y están perfectamente alineados como se muestran . Sin embargo , los dos tipos de datos char cada ocupan un solo byte , y juntos ocupan dos bytes de datos . El compilador pad esto con dos bytes de datos de la chatarra para alinear los datos correctamente. Agregue las siguientes instrucciones a struct "A" por su inclusión entre los corchetes después de la palabra

int a " struct ". ;

Int b;

char a ;

caracteres b;
4

Crear una directiva de preprocesador que le indica que debe alinear con el límite de 1 byte , no el límite de 4 bytes :

# pragma paquete (push , 1 )
5

Crear otra estructura, éste llamado "B ", y lo coloca inmediatamente después de la directiva de preprocesador escrito en el paso anterior.

struct { } B;
6

Rellene struct "B " con los mismos tipos de datos como estructura "A ", al escribir las siguientes declaraciones dentro de los corchetes de la estructura " B. " Estos tipos de datos se alinearán al byte más próximo, que pasa a ser 10 ( cuatro para cada int , uno para cada char) . No habrá relleno en esta estructura

int a; .

Int b;

char a ;

caracteres b;

7

Reiniciar la alineación de nuevo a su valor predeterminado por escrito la siguiente declaración :

# pragma pack (pop )

C /C + + Programming
Cómo utilizar Win32 GUI en C + +
Cómo utilizar la función strncpy en C + +
Cómo escribir un Ping intermitente
Cómo convertir Reality Factory En XNA
Cómo hacer una cadena C
Cómo diseñar Editor Uso de OpenGL
A orientar subvista en iPhone SDK
¿Cómo revertir una lista única Linked
Conocimientos Informáticos © http://www.ordenador.online