问题标签 [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 投票
6 回答
10681 浏览

c - 关于 C 中联合的问题 - 存储为一种类型并读取为另一种类型 - 是否定义了实现?

我正在从 K&R 阅读 C 中的 union,据我了解,union 中的单个变量可以保存多种类型中的任何一种,如果某些内容作为一种类型存储并作为另一种类型提取,则结果纯粹是实现定义的。

现在请检查此代码段:

输出:

在这里,我在 中分配值,但同时从和中u.ch检索。是否定义了实现?还是我在做一些非常愚蠢的事情?u.chu.i

我知道对于大多数其他人来说,这可能看起来很初学者,但我无法弄清楚该输出背后的原因。

谢谢。

0 投票
11 回答
7471 浏览

c - union 与 void 指针

简单地使用 void* 与 union 有什么区别?例子:

两者都可以用来完成完全相同的事情,但是使用 union 还是 void* 更好?

0 投票
3 回答
14149 浏览

c++ - 联合内的奇怪行为类对象

嗨,我想知道以下代码的原因

对于上面的代码,它给出了错误“错误 C2620: union 'Test': member 't1' has user-defined constructor or non-trivial default constructor

对于以上内容,没有错误。

我想知道原因。

先感谢您。:)

0 投票
1 回答
3784 浏览

c - 是否可以(合法)在复合文字中分配匿名联合?

我有一个结构:

当我尝试分配复合文字时,例如:

gcc 给了我一些警告,例如:

好吧,很明显编译器不确定我是否只是将值分配给可能不明确的类型。但是,即使我尝试更精确地指定:

我得到:

我已经读过,如果我把它放在(union <union name>)之前i:,它可能会起作用。但是,我更喜欢匿名工会。有没有办法做到这一点?

0 投票
4 回答
9037 浏览

c++ - union 成员可能没有构造函数,但是`std::pair` 好吗?

union成员可能没有析构函数或构造函数。因此,如果有构造函数Foo,我不能自己模板化以下类:MyClassMyClass

如果我仍然这样做,我会收到此错误:

为了解决这个问题,我创建MyClass了一个笨拙的构造函数,它首先复制周围的东西:

但我想知道是否有比使用此createMyClass功能更好的方法。构造函数会更高效,并且作为关键组件MyClassFoo<MyClass>在我的代码中被构造了数百万次。

标准::对

我也有点惊讶它可以用于std::pairunion

据我所知,std::pair见代码)有一个构造函数?

0 投票
2 回答
368 浏览

.net - PInvoke 返回带有联合的 C 类型

如何 IP/Invoke 返回联合结构的 C 函数?

0 投票
4 回答
694 浏览

c++ - 使用联合来避免动态分配难题

我很好奇在访问返回可变长度结构的 Win32 API 时使用联合是否是个好主意,以避免手动管理分配的内存。

考虑以下:

这有什么大问题吗?

0 投票
18 回答
28187 浏览

c++ - C:联合实际用在什么地方?

我有一个例子,其中保证了类型的对齐, union max_align 。我正在寻找一个实际使用联合的更简单的例子来解释我的朋友。

0 投票
1 回答
1783 浏览

c - 在 yacc 中对结构使用 union

我对如何指定我的语法成员的类型有点困惑。我想将 prog 和 decls 声明为 ASTNode。我将使用这些成员添加到列表等。但是 yacc 无法将它们识别为 ASTNode 并且我收到类型错误。

这里我的 tIdent,tCharConst,tIntConstant 有一些类型,但是,如何将 ASTNode 类型提供给我的成员。

0 投票
10 回答
85064 浏览

c++ - 如何使用匿名结构/联合编译 C 代码?

我可以在 c++/g++ 中做到这一点:

然后,

将工作。

使用 gcc 在 c 中如何做到这一点?我有

但是我到处都有错误,特别是