问题标签 [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 回答
3984 浏览

c++ - sem_t union/struct C++ 继承

我在 Linux (RHEL 5.3) 上移植了一些旧的 C++ 项目。

情况如下

这曾经有效,因为直到 glibc-2.3.3.20040420 sem_t 是一个结构。现在,新版本的 glib 不允许使用 union =>inheritance。所以编译不起作用。

它怎么样:

情况如何:

解决此问题的最佳方法是什么?如何“包装” sem_t 的功能?

非常感谢!

======稍后编辑=====================================

OldClass 被其他类“稍后”使用(项目很大):因此,我正在寻找一种方法来保持相同的接口,这样我就可以避免重写对 OldClass 的所有调用。

我在想是否有办法创建一个环绕 sem_t 的类 MySem_t;然后OldClass 将继承 MySem_t ...这听起来可行吗?

谢谢你。

0 投票
6 回答
1358 浏览

c - 将 uint64_t 数据类型存储在 C 中联合中存在的 char 类型字段中

嗨,我有以下联合,它是更大结构的一部分,我想在这个联合中存储一个 uint64_t(64 位大小)数据。但是我想通过访问 id_data 字段来存储它,因为其他字段不足以容纳完整的 uint64_t。但我不知道如何将我的 uint64_t 数据分配到这个 id_data 字段中。

我知道如何从这个字段中读取 uint64_t 数据。但不知如何为它赋值。

任何帮助将不胜感激。

谢谢。

0 投票
7 回答
38898 浏览

c - struct中的匿名联合不在c99中?

这是我遇到的非常简化的问题代码:

我不明白的是:

使用GCC-std选项编译上面的代码没有任何问题(并且类似的代码工作得很好),但似乎c99 不允许这种技术。为什么会这样,是否有可能使 is c99(或c89, c90)兼容?谢谢。

0 投票
2 回答
1041 浏览

c++ - 使用联合来对 IP 地址进行多种解释?

在工作中,我们有以下构造可以将 IP 地址解释为 4 字节数组或 32 位整数:

这很好用,但在阅读C++ 编码标准一书的第 97 章“不要使用联合重新解释表示”后,我有点担心。书中的例子更隐蔽,我不确定它是否适用于我的代码。

我的代码有任何潜在问题吗?

0 投票
3 回答
33583 浏览

c - 访问结构内联合中的变量

谁能解释为什么第一种访问结构中的联合内的嵌套结构元素的方法有效而第二种方法无效?

0 投票
4 回答
877 浏览

c++ - C++“选择”联盟

不确定是否有一个术语,“选择”似乎有效。我在 C++ 中工作,我需要创建一堆工会,其中工会代表工会成员之一的选择。当前的“选择”被跟踪并且始终可用。我目前正在手动编码这些“联合”,但我想知道是否有任何巧妙的技巧可以(半)自动地完成这类事情。

在我第一次尝试实现这个时,我遇到了没有赋值运算符重载或非平凡构造函数或复制构造函数的联合限制,但我意识到因为我实际上是在跟踪当前的“选择”,所以有非常明确的行为几乎在所有情况下都能接受。

这就是我现在正在做的事情,(只有两个选择,可能最多 10 或 15 个),它的代码量相当大,几乎所有这些都只是样板文件。此外,如果有人对我下面的内容是否有效有任何意见,那将是很棒的,仍然会发现 C++ 的一些疯狂......

谢谢你的帮助

0 投票
2 回答
1052 浏览

c - 具有易失性和非易失性成员的联合的语义是什么?

更具体地说,我有(简化)以下内容:

如果我从不访问 的第一sizeof(int)data,我可以依靠bits按预期工作吗?

0 投票
3 回答
1259 浏览

sql - 不使用union怎么写Sql语句?

我有一个如下所示的 sql 语句。如何在不使用 union 关键字的情况下将单行(code = 0,desc = 1)添加到此 sql 语句的结果?谢谢。

0 投票
11 回答
8539 浏览

c - 当可以使用 struct - C 完成相同的事情时使用联合的优势

我很难理解unionC 中的使用。我在这里阅读了很多关于这个主题的帖子。但是他们都没有解释为什么union可以使用结构来实现相同的目标。

引用 K&R

作为编译器符号表管理器中的示例,假设常量可能是 int、float 或字符指针。特定常量的值必须存储在适当类型的变量中,但如果该值占用相同的存储量并且无论其类型如何都存储在相同的位置,则最方便表管理。这是联合的目的,单个变量可以合法地保存多种类型中的任何一种。语法基于结构:

用法将是

同样的事情可以使用结构来实现。就像是,

这不一样吗?有什么优势union

有什么想法吗?

0 投票
3 回答
3031 浏览

c - C中的结构和联合,确定大小和访问成员

全部,

这是一个关于工会的例子,我觉得很困惑。

考虑到char是 1 个字节,int是 2 个字节和long4 个字节。这里整个结构的大小是多少?联合大小会是 {size of char*}+ {size of double} 吗?由于联合中包裹的结构,我感到困惑。

另外,如何访问d结构中的变量。 var.d?