我正在阅读一些 c 代码,发现某些结构包含一个没有变量名的 union 名,就像下面的例子:
typedef union Lock Lock;
union Lock{
uint32 key;
};
struct Test{
Lock;
uint32 name1;
};
Lock inside Test 是什么意思? 附言。类型 uint32 已经在两个声明之前定义。
最佳答案
您发布的 C 无效。就语言而言,Lock
和 union Lock
是完全不同的东西,仅此而已。
但是,如果您要在结构中使用 union Lock
,它会编译但不会执行任何操作:这将只是一个多余的声明,什么都不声明。
有人猜测在结构的开头添加 union Lock
或 Lock
会有所作为。快速检查应该证明错误:
printf("%zu\n", offsetof(struct Test, name1)); /* Will print 0. */
关于c - 在 c 中的结构中放置一个 union 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15941590/