¿Qué hace el colon en esta definición de estructura?

Posible duplicado:
¿Qué significa ‘unsigned temp: 3’?

No entiendo esta definición de la estructura. Me parece ilegal, pero aparentemente no lo es:

typedef struct { unsigned i:1; } my_struct; 

Creo que marcar la variable como sin unsigned sin un tipo es lo mismo que marcarla como unsigned int . Sin embargo, estoy completamente desconcertado por el colon. ¿Qué hace? Supongo que es una especie de inicializador, pero no tengo ni idea de lo que significa. En la parte superior de mi cabeza, el único lugar donde esperaría un colon en C es el operador ternario, lo que obviamente no lo es. Entonces, esto parece ser una construcción con la que no estoy familiarizado. ¿Alguien puede explicar cuál es el propósito del colon en esta definición de estructura? ¿Qué hace exactamente la statement unsigned i:1; ¿media?

Define i para ser de 1 bit de ancho. Si se da i: x, entonces define i como ancho de x bits.