¿Qué significa agregar dos puntos ":1" después de un miembro en la definición de la estructura?
Este es el método de representación de la operación del campo de bits, es decir, agregar ":1" después significa que el tamaño de este miembro representa 1 bit del tipo definido, cuentas ":2". para 2 bits, y así sucesivamente por analogía. Por supuesto, el tamaño no puede exceder el número total de bits contenidos en el tipo definido.
Un byte son 8 bits. Por ejemplo, el tipo definido en su estructura es u_char, un byte, ***8 bits y el máximo no puede exceder 8.
En una computadora de 32 bits,
short es de 2 bytes, ***16 bits y el máximo no puede exceder los 16.
int es de 4 bytes, * **32 bits, el máximo no puede exceder 32.
Y así sucesivamente.
Esta definición ahorra espacio. Por ejemplo, en la estructura anterior, el tipo de variable definido es u_char, que es un tipo de un byte, es decir, 8 bits.
fc_subtype ocupa 4 bits, fc_type ocupa 2 bits, fc_protocol_version ocupa 2 bits, ***8 bits, que es exactamente un byte.
Los otros ocho miembros ocupan cada uno 1 bit, ***8 bits, que es exactamente un byte.
Entonces, si el tamaño de su estructura se calcula usando sizeof (struct frame_control), es de 2 bytes.