C语言结构体struct、联合体union和位域操作共同使用示例
在 C 语言中,结构体(struct)、联合体(union)和位域(bit-field)可以共同使用,以实现更复杂的数据组织和内存管理。下面是一个示例程序,展示了如何将它们结合起来使用。
#include "stdio.h"
#include "stdlib.h"
#include "stdint.h"
typedef union {
uint8_t value;
struct {
uint8_t bit0 : 1; //最低位,以下顺序不能错
uint8_t bit1 : 1;
uint8_t bit2 : 1;
uint8_t bit3 : 1;
uint8_t bit4 : 1;
uint8_t bit5 : 1;
uint8_t bit6 : 1;
uint8_t bit7 : 1; //最高位
}bits;
}gpio;
int main(void)
{
gpio a;
a.value = 0x5C;
printf("%d %d %d %d %d %d %d %d \r\n",
a.bits.bit7,
a.bits.bit6,
a.bits.bit5,
a.bits.bit4,
a.bits.bit3,
a.bits.bit2,
a.bits.bit1,
a.bits.bit0); //0 1 0 1 1 1 0 0
a.bits.bit0 = 1;
a.bits.bit1 = 1;
printf("a=%02x\r\n", a.value); //a=5f
system("pause");
return 0;
}