我对位字段的概念还不熟悉。我试图访问结构中的元素,但在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
(如果这显而易见,那就抱歉)。 - m01