c - 在 c 中的结构中放置一个 union 是什么意思?

标签 c struct unions

我正在阅读一些 c 代码,发现某些结构包含一个没有变量名的 union 名,就像下面的例子:

typedef union Lock Lock;

union Lock{
    uint32 key;
};

struct Test{
    Lock;
    uint32 name1;
};

Lock inside Test 是什么意思? 附言。类型 uint32 已经在两个声明之前定义。

最佳答案

您发布的 C 无效。就语言而言,Lockunion Lock 是完全不同的东西,仅此而已。

但是,如果您要在结构中使用 union Lock,它会编译但不会执行任何操作:这将只是一个多余的声明,什么都不声明。


有人猜测在结构的开头添加 union LockLock 会有所作为。快速检查应该证明错误:

printf("%zu\n", offsetof(struct Test, name1)); /* Will print 0. */

关于c - 在 c 中的结构中放置一个 union 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15941590/

相关文章:

C - 返回一个没有 malloc 的 char 指针

c - 如何从递归函数内部写入文件

c - strncpy() 字符串长度输出错误

c - select 未检测到本地主机连接已关闭

c++ - union 和类(Class)

c - C 中的数据隐藏,多态行为?

c - 访问 typedef 结构元素

可以将地址运算符应用于非整数类型的二维数组和 C 中结构的非整数字段吗?

c - 复制我的嵌套结构时出了什么问题?

c - 请澄清我对 C 中位域和 union 的理解