definicion codigo clases c bit-fields colon

definicion - codigo de clases en c++



En C, ¿qué significa dos puntos dentro de una declaración? (3)

Es un miembro de bitfield . Su código significa que dumpable ocupa exactamente 1 bit en la estructura.

Los campos de bits se usan cuando desea empaquetar miembros a nivel de bit. Esto puede reducir en gran medida el tamaño de la memoria utilizada cuando hay muchos indicadores en la estructura. Por ejemplo, si definimos una estructura con 4 miembros con restricción numérica conocida

0 < a < 20 b in [0, 1] 0 < c < 8 0 < d < 100

entonces la estructura podría declararse como

struct Foo { unsigned a : 5; // 20 < 2^5 = 32 unsigned b : 1; // unsigned c : 3; // unsigned d : 7; // 100 < 2^7 = 128 };

entonces los pedazos de Foo se pueden arreglar como

ddddddd c cc b aaaaa --------- --------- --------- ---------- octet 1 octet 0 =========================================== uint32

en lugar de

struct Foo { unsigned a; unsigned b; unsigned c; unsigned d; };

en el que se desperdician muchos bits debido al rango de valores

# wasted space which is not used by the program # v v ddddddd ccc ------------------------------------ ------------------------------------ uint32 uint32 b aaaaa ------------------------------------ ------------------------------------ uint32 uint32

para que pueda ahorrar espacio empacando muchos miembros.

Tenga en cuenta que el estándar C no especifica cómo se arreglan o empaquetan los campos de bits en una "unidad de almacenamiento direccionable". Además, los campos de bits son más lentos en comparación con el acceso directo de miembros.

Posible duplicado:
¿Qué significa "temperatura sin signo: 3" significa

Estoy aprendiendo algo del código del kernel, y vine a lo largo de la siguiente línea (en linux 2.4, sched.h, struct mm_struct):

unsigned dumpable:1;

¿Qué significa esto?


Si mal no recuerdo, cuando se utiliza dentro de una estructura, el número después de dos puntos significa cuántos bits componen la variable (o un campo de bits).

Tan unsigned dumpable:1; es un bitfield de bit único.


Significa que es un campo de bits, es decir, el tamaño de dumpable es un bit único, y solo se le puede asignar 0 o 1. Normalmente se usa en código antiguo para ahorrar espacio, o en código de bajo nivel que interactúa con el hardware (aunque el embalaje no es portátil). Vea here para más información