gpt4 book ai didi

c - union 体的默认类型

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:12 25 4
gpt4 key购买 nike

我听说有些编译器允许以下内容:

union {
int array[2]; // The default type for this union is `int[2]`
struct {
int low;
int high;
} word;
} foo;


// Normal usage
foo.a[0] = 0;
foo.low = 0

// What I am looking for
foo[0] = 0;

它是 C99/C11 标准的一部分吗?

编辑

我想我找到了让我困惑的地方。我们实际上可以在 C 中声明一个没有名称的 union 。

struct {
union {
int all[2];
struct {
int low;
int high;
} word;
} bar;
} foo;

foo.bar.all[0];
foo.bar.low;
foo.bar.high;

在那种特殊情况下,它解决了我的 XY 问题。

最佳答案

不,它不是标准 C 的一部分。

如果有任何编译器支持它(我不确定,因为我从来没有试图使用这样的功能)它将成为特定于供应商的扩展。

在 C++ 中 union 可以有一个 operator[](),但在 C 中没有等价物。我唯一一次看到它被使用,我不得不抵制扼杀的诱惑程序员。

关于c - union 体的默认类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com