gpt4 book ai didi

c - 位域声明的异常语法

转载 作者:行者123 更新时间:2023-12-02 03:29:18 29 4
gpt4 key购买 nike

我遇到了一种我以前从未见过的位域语法。

       struct msg_hdr0{
uint8_t a : 1,
b : 1,
e : 4,
f : 2;
};

int main(void)
{
struct msg_hdr0 hdr;

bzero((void *)&hdr, sizeof(hdr));
hdr.b = 1;

printf("hdr = 0x%X\n", *(uint32_t *)&hdr);

return 0;
}

这在 linux 和 gcc 编译器上运行良好。谁能建议我在哪里可以找到这方面的任何文档。这是 GCC 扩展吗?

常见的位域语法是:

    struct box_props
{
unsigned int opaque : 1;
unsigned int fill_color : 3;
unsigned int : 4; // fill to 8 bits
unsigned int show_border : 1;
unsigned int border_color : 3;
unsigned int border_style : 2;
unsigned int : 2; // fill to 16 bits
};

最佳答案

在函数中,您可以在单个语句或多个语句中声明变量列表。

void myFunction(void)
{
// Declare several variables (of teh same type) in a single statement
int a, b, c;
// Declare some more, each in their own statement
int x;
int y;
int z;
}

类似地,结构中的位字段。

struct myStruct
{
// Declare several bitfields in a single statement
int a : 1, b : 3, c : 4;
// Declare some more, each in their own statement
int x : 1;
int y : 3;
int z : 4;
}

关于c - 位域声明的异常语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28041996/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com