gpt4 book ai didi

位字段只能是结构/union 的字段,而不是 "normal"、 "stand-alone"变量吗?

转载 作者:行者123 更新时间:2023-12-02 00:09:19 26 4
gpt4 key购买 nike

位字段的字段部分似乎表明它们只能是结构或 union 中的字段。

位域可以是典型的“独立”变量,在任何聚合数据类型(如 union 或结构)之外,如下所示:

   int sum:6;   //Can this work as a declaration statement?
sum=4;

如果不是,为什么会这样?如果位域基本上是为了使用更少的内存,如果我们知道它不会超过那个大小,为什么我们不能将任何变量声明为位域呢?

最佳答案

位域只是结构体或 union 体的一部分,因为这就是 C standard允许。本来可以做出不同的决定。为什么委员会决定按照现在的方式编写标准,你必须问他们。

要在 C99 标准中查找信息:

从目录来看:

6.7 声明

6.7.2 类型说明符(好吧,这个有点晦涩)

6.7.2.1 结构和 union 说明符。

一个位域是 declarator_opt : constant-expression语法的一部分。这种语法只在此处允许,结果是不能在其他地方声明位域。

语法告诉您,如果您对此类信息感到好奇,可以选择省略位域的名称。第 6.7.2.1:3 条更进一步,禁止使用长度为 0 的位字段的名称。

关于位字段只能是结构/union 的字段,而不是 "normal"、 "stand-alone"变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373465/

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