2010-12-07 20 views
4

Mögliche Duplizieren:
What does 'unsigned temp:3' meansWas macht der Doppelpunkt in dieser Strukturdefinition?

Ich verstehe diese Struktur Definition nicht. Es scheint, illegal zu mir, aber anscheinend ist es nicht:

typedef struct 
{ 
    unsigned i:1; 
} my_struct; 

Ich glaube, dass als unsigned ohne eine Art der variablen Markierung ist die gleiche, wie sie als unsigned int Markierung. Allerdings bin ich völlig durch den Doppelpunkt verblüfft. Was tut es? Meine Vermutung ist, dass es eine Art Initialisierung ist, aber ich habe keine Ahnung, was es bedeutet. Von meinem Kopf her ist der einzige Ort, an dem ich einen Doppelpunkt in C erwarten würde, im ternären Operator, was das offensichtlich nicht ist. Das scheint mir ein Konstrukt zu sein, mit dem ich nicht vertraut bin. Kann jemand erklären, was der Zweck des Doppelpunkts in dieser Strukturdefinition ist? Was genau bedeutet die Deklaration unsigned i:1;?

Antwort

8

Es definiert i von 1 Bit Breite sein. Wenn i: x gegeben ist, dann definiert es, dass i x Bits breit ist.