2009-02-14 29 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的内部声明,所以它不是完全清楚你正在努力去做。

(或者,这是冒号的一些其他语法,我不知道的???)