-
StackOverflow 文件
-
C Language 教程
-
位欄位
-
為位元場付錢
- 不允許使用位域陣列,位域指標和返回位欄位的函式。
- 地址運算子(&)不能應用於位欄位成員。
- 位欄位的資料型別必須足夠寬以包含欄位的大小。
sizeof()
運算子不能應用於位域。
- 沒有辦法為隔離的位欄位建立一個
typedef
(儘管你可以為包含位欄位的結構建立一個 typedef
)。
typedef struct mybitfield
{
unsigned char c1 : 20; /* incorrect, see point 3 */
unsigned char c2 : 4; /* correct */
unsigned char c3 : 1;
unsigned int x[10]: 5; /* incorrect, see point 1 */
} A;
int SomeFunction(void)
{
// Somewhere in the code
A a = { … };
printf("Address of a.c2 is %p\n", &a.c2); /* incorrect, see point 2 */
printf("Size of a.c2 is %zu\n", sizeof(a.c2)); /* incorrect, see point 4 */
}