相关疑难解决方法(0)

C++中的一个定义规则究竟是什么?

C++中的一个定义规则究竟是什么意思?我能找到的唯一值得信赖的事件是在C++编程语言中,第3版.编辑,第9.2.3节.除了那个规则之外,该规则是否有官方定义?

c++ definition

38
推荐指数
1
解决办法
9184
查看次数

位字段只能是结构/联合的字段,而不是“普通”、“独立”变量吗?

位字段的字段部分似乎表明它们只能是结构或联合内的字段。

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

   int sum:6;   //Can this work as a declaration statement?
   sum=4;
Run Code Online (Sandbox Code Playgroud)

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

c variables bit-fields

6
推荐指数
1
解决办法
3915
查看次数

为什么普通变量不允许使用位域?

我想知道为什么bitfields与unions/structs一起工作,但是没有像int或那样的普通变量short.
这有效:

struct foo {
    int bar : 10;
};
Run Code Online (Sandbox Code Playgroud)

但这失败了:

int bar : 10; // "Expected ';' at end of declaration"
Run Code Online (Sandbox Code Playgroud)

为什么此功能仅在联合/结构中可用而不在变量中?技术不一样吗?


编辑:

如果允许,你可以创建一个3字节的变量,而不是每次都使用struct/union成员.这就是我对结构的看法:

struct int24_t {
    int x : 24 __attribute__((packed));
};

struct int24_t var; // sizeof(var) is now 3
// access the value would be easier:
var.x = 123;
Run Code Online (Sandbox Code Playgroud)

c gcc struct unions bit-fields

4
推荐指数
1
解决办法
891
查看次数

标签 统计

bit-fields ×2

c ×2

c++ ×1

definition ×1

gcc ×1

struct ×1

unions ×1

variables ×1