2009-02-14 32 views
2

如果我聲明如下枚舉:使用「:數字」,而聲明變量

typedef enum A 
{ 
    a = 0x00000001, 
    b = 0x00000002 
} AObj; 

現在,如果我宣佈AObj的變量如下這是什麼意思?

AObj myAObj : 2; 
+0

你試着編譯它? – yungchin 2009-02-14 11:55:39

+0

對不起,我想我不得不把一個,:) – Raghu 2009-02-14 12:12:53

回答

4

這是一種指定使用位數的方法。 這是2意味着2位。

另請注意,這僅在與對齊方式相同的結構中的其他位域使用時纔有用,並且填充將導致內存被跳過。

4

您可能正在談論的「bit fields」,它使您能夠創建一個結構,您可以在其中解決個別位。但是(!除非是我弄錯了)你的語法都錯了:你缺少逗號和等於在你的枚舉跡象:

typedef enum A 
    { 
     a = 0x00000001, 
     b = 0x00000002 
    } AObj; 

更重要的是,位域的struct S的內部聲明,所以它不是完全清楚你正在努力去做。

(或者,這是冒號的一些其他語法,我不知道的???)