我是位域概念的新手。我正在嘗試訪問結構中的元素,但它在這樣的aa=v
處顯示錯誤。訪問位結構中的位域
error: incompatible types when assigning to type ‘cc’ from type ‘long unsigned int ’
而且它顯示錯誤,如果我在aa= (cc)v;
error: conversion to non-scalar type requested
類型強制轉換我試圖通過聲明一個指向結構訪問的元素。在這種情況下,我做得很好,但在這種情況下,我沒有聲明指向結構的指針,我必須訪問這些元素。我怎樣才能克服這個錯誤。
感謝所有幫助提前
#include<stdio.h>
typedef struct
{
unsigned long a:8;
unsigned long b:8;
unsigned long c:8;
unsigned long d:8;
}cc;
int main()
{
cc aa ;
unsigned long v = 1458;
printf("%d\n",sizeof(aa));
aa=v; // aa= (cc)v;
printf("%d %d %d %d\n", aa.a,aa.b,aa.c,aa.d);
return 0;
}
我可能會從'inttypes.h'使用'uint8_t's如果你需要8個大小的位域(對不起,如果這是明顯)。 – m01