问题标签 [unions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6260 浏览

python - 在python中实现C的枚举和联合

我试图找出一些 C 代码,以便我可以将它移植到 python 中。该代码用于读取专有的二进制数据文件格式。到目前为止它一直很简单——它主要是结构,我一直在使用struct库从文件中请求特定的 ctypes。但是,我只是想出了这段代码,我不知道如何在 python 中实现它。特别是,我不确定如何处理enumunion

其次,在下面的结构定义中,我不确定变量名后面的冒号是什么意思,(例如,KeyPad:4)。这是否意味着我应该读取 4 个字节?

如果它有用,我在 python 中访问文件的方式的抽象示例如下:

0 投票
5 回答
8690 浏览

c - 工会中的工会

在 C 中,是否可以在另一个联合中定义一个联合?如果不是,为什么不可能?或者如果是,它可以在哪里使用?

0 投票
4 回答
1346 浏览

c - 帮助投射指向联合的指针

我正在研究 C 固件项目。我有一个定义为的工会,

我也有一个具有这个原型的函数,

和定义为 LONGVALUE 类型的变量,

问题:我用数组​​(tempBuff1)中的值填充联合变量的各个字节,然后我想将联合中第一个元素的地址传递给将其打印到UART的函数。在我的函数调用sendHexToASCII_UART((int *)countAddr.bytes[0], 4);中,我收到一个编译器警告,说“从不同大小的整数转换为指针”。有人可以解释为什么我会得到这个以及如何让它消失吗?注意:将 (int *) 强制转换为 (char *) 会导致相同的警告。

0 投票
1 回答
1474 浏览

c++ - C++ 无限制联合解决方法

是否有任何解决方法可以u1.a = u2.a使用完全相同的语法来完成最后一行,但让它调用operator =(不关心它是 =(B&) 还是 =(A&)) 而不仅仅是复制数据?还是不受限制的联合(即使在 Visual Studio 2010 中也不支持)是唯一的选择?

0 投票
2 回答
2559 浏览

c - 这一系列 C typedef/struct/union/enum 定义的意义何在?

在迈向自举方案解释器的第一步中,我发现了以下一组 typedef、struct、union 和 enum 定义:

特别是,我不确定我是否理解 union ( struct { long value; } fixnum;) 内部结构的意义——一个只有一个字段的结构,要保存一个 long 吗?很奇怪。

但我也不确定我是否理解更大的一点。我认为枚举定义的情况是他正在为词汇实体设置许多可能的类型值,这object是一种保存这些值的方法,但也许比我有更多 C 实践经验的人可以提供更详细的解释.

谢谢!

0 投票
7 回答
34692 浏览

c++ - C中“联合”和“结构”之间的主要区别是什么?

可能的重复:
C 中结构和联合之间的区别

我可以理解结构的含义。但是,我对联合和结构之间的区别有点困惑。联合就像一份记忆。究竟是什么意思。?

0 投票
2 回答
3558 浏览

c++ - 错误:联合中不允许复制赋值运算符

当出现以下错误时,我正在编译下面的代码。我找不到原因。

这段代码虽然用 gcc 编译罚款。仅使用 g++ 给出错误。

0 投票
2 回答
7442 浏览

c++ - C ++:与方法的联合?

拥有一种或多种方法的工会有什么问题吗?或者有什么需要注意的?(我可以看到构造函数/析构函数由于精神分裂症的原因而存在问题)

0 投票
5 回答
2588 浏览

c++ - 为什么需要将全局匿名联合声明为静态?

C++ 0x 草案

9.5.6 在命名命名空间或全局命名空间中声明的匿名联合应声明为静态的。

为什么是这样?

0 投票
7 回答
4352 浏览

c++ - 联合作为基类

该标准定义了 Unions 不能用作 Base 类,但是对此有什么具体的理由吗?据我了解,联合可以有构造函数、析构函数、成员变量以及对这些变量进行操作的方法。简而言之,Union 可以封装可以通过成员函数访问的数据类型和状态。因此,在最常见的术语中,它有资格成为一个类,如果它可以作为一个类,那么为什么限制它不能作为一个基类呢?

编辑:虽然答案试图解释原因,但我仍然不明白 Union 作为派生类比 Union 作为一个类更糟糕。因此,为了获得更具体的答案和推理,我将推动这个以获得赏金。对已经发布的答案没有冒犯,谢谢!