Questions tagged «unions»

C语言族中用于声明联合数据类型的关键字的复数形式。

15
结构和联合之间的区别
有没有很好的例子来说明a struct和a 之间的区别union?基本上,我知道会struct使用其成员的所有内存,并union使用最大的成员内存空间。操作系统级别是否有其他差异?
411 c  struct  unions 

15
C和C ++中的合并目的
我以前很舒服地使用过工会。今天,当我阅读这篇文章并得知此代码时,我感到震惊 union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down the line, without any edit to pixel if(pixel.components.a) // accessing the non-active member ARGB::components …
254 c++  c  unions  type-punning 


18
谁会何时使用工会?是仅C语言时代的残余吗?
我学到了,但并没有真正得到工会。我遍历的每一个C或C ++文本都对它们进行了介绍(有时会进行介绍),但是它们却很少给出为什么或在何处使用它们的实际示例。工会在现代(甚至是传统)案例中什么时候有用?我仅有的两个猜测是,当您的工作空间非常有限时,或者当您开发API(或类似的东西)时,您想强迫最终用户在多个对象/类型中只有一个实例时,对微处理器进行编程一度。这两个猜测是否接近正确?
133 c++  c  unions 


6
为什么C ++不允许匿名结构?
一些C ++编译器允许匿名联合和结构作为标准C ++的扩展。这是一种语法糖,偶尔会很有帮助。 有什么理由阻止它成为标准的一部分?有技术障碍吗?哲学的?还是只是不足以证明其合理性? 这是我正在谈论的示例: struct vector3 { union { struct { float x; float y; float z; }; float v[3]; }; }; 我的编译器会接受这一点,但警告“无名结构/联合”是C ++的非标准扩展。
92 c++  struct  unions 

2
只与一个成员一起使用联合的目的是什么?
当我阅读seastar源代码时,我注意到有一个称为tx_side只有一个成员的联合结构。这是解决某些问题的技巧吗? 仅供参考,我将tx_side以下结构粘贴: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque<work_item*> pending_fifo; } a; } _tx;
89 c++  c++14  unions 


5
打字稿有联合,所以枚举是多余的吗?
自从TypeScript引入并集类型以来,我想知道是否有任何理由声明枚举类型。考虑以下枚举类型声明: enum X { A, B, C } var x:X = X.A; 和类似的联合类型声明: type X: "A" | "B" | "C" var x:X = "A"; 如果它们基本上具有相同的目的,并且工会更强大且更具表现力,那么为什么枚举是必要的?

6
C#中的C ++联合
我正在将用C ++编写的库转换为C#,并且关键字“联合”存在一次。在结构中。 将其转换为C#的正确方法是什么?它是做什么的?看起来像这样; struct Foo { float bar; union { int killroy; float fubar; } as; }
77 c#  c++  unions 

5
联合与类型搭配
我已经搜索了一段时间,但找不到明确的答案。 许多人说,使用union来进行pun-pun是不确定的,也是不好的做法。为什么是这样?考虑到您将原始信息写入的内存,它不会做任何未定义的事情,而不会改变它的任何原因(除非它超出了堆栈范围,但这不是联合问题) ,那将是不好的设计)。 人们引用了严格的别名规则,但是在我看来,这就像在说您不能执行,因为您无法执行。 如果不键入pun,联合的意义是什么?我在某处看到应该在不同的时间将相同的内存位置用于不同的信息,但是为什么不删除信息然后再使用呢? 总结一下: 为什么使用联合进行类型修剪是不好的? 如果不是这样,他们的目的是什么? 额外信息:我主要使用C ++,但想了解有关C和C的信息。特别是,我使用联合在浮点数和通过CAN总线发送的原始十六进制之间进行转换。
76 c++  c  unions  type-punning 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.