40得票7回答
联合体作为基类

标准规定,联合体不能用作基类,但这是否有具体的原因?据我所知,联合体可以有构造函数、析构函数、成员变量以及操作这些变量的方法。简而言之,联合体可以封装数据类型和状态,并通过成员函数进行访问。因此,在通常情况下,它可以作为一个类的资格,并且如果它可以作为类的话,那么为什么会被限制不能作为基类呢?...

39得票6回答
C语言中关于union的一个问题——将一个类型存储为另一种类型并进行读取,这是由具体实现定义的吗?

我正在阅读K&R关于C语言联合体的内容,据我理解,联合体中的单个变量可以存储多种类型之一。如果将某些东西作为一个类型存储,并作为另一个类型提取,则结果纯粹是由实现定义的。 现在请检查此代码片段:#include<stdio.h> int main(void) { un...

38得票3回答
为什么在一个函数中声明的联合类型不能在另一个函数中使用是无效的?

当我阅读ISO/IEC 9899:1999(参见:6.5.2.3)时,看到了如下示例(重点是我的): 以下不是有效的片段(因为联合类型在函数f内不可见):struct t1 { int m; }; struct t2 { int m; }; int f(struct t1 * p1, ...

38得票3回答
工会成员的析构函数会被调用吗?

C++11允许在union中使用标准布局类型: Union的成员具有用户定义的构造函数 我的问题是:当union超出其作用域时,我是否保证自定义析构函数将被调用? 我的理解是,在切换时必须手动销毁和构造:http://en.cppreference.com/w/cpp/language/uni...

38得票7回答
GCC、严格别名和通过联合转换类型

你有任何恐怖故事要讲吗?GCC手册最近新增了一条关于-fstrict-aliasing和通过联合转换指针的警告: [...] 取地址,将结果指针强制转换并解引用结果具有未定义的行为 [强调添加],即使转换使用联合类型,例如: union a_union { in...

38得票3回答
C++和C中的联合初始化

我已经构建了一个可用的C语言库,其中使用常量,在头文件中进行定义,如下所示:typedef struct Y { union { struct bit_field bits; uint8_t raw[4]; } X; } CardInfo; static const ...

38得票8回答
C语言中的联合示例

我正在寻找一些union的例子,不是为了理解它如何工作,希望我已经明白了,而是想看看人们用union进行哪种类型的黑客攻击。 所以请随意分享您的union hack(当然要有一些解释 :))

37得票3回答
C语言中的指定初始化器是什么?

我有一个作业需要理解C语言中的“指定初始化器”是什么,以及使用它来初始化变量意味着什么。我对这个术语不熟悉,也找不到确切的定义。请问,“指定初始化器”在C语言中是什么?

36得票1回答
如果我们只有一个成员,结构体和联合体有什么区别吗?

如果有的话,我想了解在使用同一成员数据类型时,结构体和联合体之间的区别。

32得票3回答
联合体可以在声明时初始化吗?

例如,假设我们有一个联合体typedef union { unsigned long U32; float f; }U_U32_F; 当声明一个联合类型的变量时,有没有一种方法可以设置初始值?U_U32_F u = 0xffffffff; // Does not work...is the...