Es un campo de bits, una característica oscura y equivocada de las estructuras. Eso debería ser suficiente para buscar la información que necesita saber para manejar bitfields en el código de otras personas. En cuanto a tu propio código, nunca uses bitfields.
Edit: Según lo solicitado por Zack, los bitfields tienen desventajas significativas contra realizar su propia aritmética de bit, y ninguna ventaja. Éstos son algunos de ellos:
- Solo puede copiar, comparar, serializar o deserializar un elemento de campo de bits a la vez. Al hacer su propia aritmética de bits, puede operar en palabras completas a la vez.
- Nunca puede tener un puntero a elementos de campo de bits. Con su propia aritmética de bits, puede tener un puntero a la palabra más grande y un índice de bit dentro de la palabra como un "puntero".
- Leer directamente/escribir estructuras C en el disco o en la red es portátil a medio camino sin campos de bits, siempre que use tipos de tamaño fijo y conozca la endiancia. Sin embargo, agregue campos de bits, y el orden de los elementos dentro del tipo más grande, así como el espacio total utilizado y la alineación, se vuelven altamente dependientes de la implementación, incluso dentro de una arquitectura de CPU determinada.
- La especificación C tiene reglas muy extrañas que permiten que la firma de los elementos del campo de bits sea diferente de lo que cabría esperar, y muy pocas personas son conscientes de esto.
Para banderas de un solo bit, usar su propia aritmética de bit en lugar de bitfields es una completa obviedad. Para valores más grandes debe empacar, si es demasiado doloroso escribir toda la aritmética de bits por todos lados, escriba algunas macros simples.
es esta parte de una definición de estructura? –
Sí. es parte de struct. – Eonil