8得票4回答
C/C++联合体和未定义行为

以下情况是否属于未定义行为? union { int foo; float bar; } baz; baz.foo = 3.14 * baz.bar; 我记得在两个序列点之间从同一基础内存中写入和读取数据是未定义的行为,但我不确定。

12得票3回答
通过指针访问C联合体成员

在C99中,像下面的例子一样通过指针访问联合体成员会导致未定义的行为吗?意图似乎很明确,但我知道在别名和联合方面存在一些限制。union { int i; char c; } u; int *ip = &u.i; char *ic = &u.c; *ip = 0; *ic...

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

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

9得票2回答
C++14构造函数中使用constexpr联合条件初始化

我希望根据传入的参数选择在构造函数中初始化的 union 成员。以下是一个可行的示例: struct A { union { int i; float f; }; A(double d, bool isint) { if...

13得票4回答
如何在C语言中访问联合体内的结构体成员?

我有以下联合体:union employee { char key; struct manager { short int age; float shares; short int level; }; ...

13得票2回答
C联合体中变量的对齐在所有系统上是否相同?

考虑以下联合:typedef union { struct { // Anonymous struct int red; int green; int blue; }; int colorChannels[3]; } Co...

17得票2回答
使用联合体在两个具有共同初始序列的结构体之间进行转换是否是合法且定义良好的行为(见示例)?

我有一个API,其中包含一个公共结构A和一个内部结构B,并且需要能够将结构B转换为结构A。以下代码是否在C99(和VS 2010/C89)和C++03/C++11中合法且具有良好定义的行为?如果是,请解释什么使它具有良好的定义。如果不是,则转换这两个结构之间最有效和跨平台的方法是什么?stru...

7得票4回答
Ada变体记录能否与C++联合体进行二进制兼容?

我正在设计一个通信中间件,用于应用程序中有一个Ada模块和许多C++模块进行参数(标量值)和结构体的通信。该应用程序在MS Windows XP和Windows 7上运行,C++部分正在使用MSVC++ 2008进行开发,而Ada部分则是使用GPS/GNAT进行开发。Ada版本为1995,但我...

10得票2回答
在C语言中创建一个通用的"函数指针"联合体是一个不好的想法吗?

我正在处理一个项目,需要使用通用的“指向函数”的类型。然而,在C语言中,要使用一个指向函数的指针,你需要在函数指针的类型中指定原型。 例如,如果我有函数void setdata(short data),我不能将它存储在与int getdata()相同的指针中,因为它们的参数和返回值是不同的。...

7得票3回答
根据模板参数选择一个联合成员

我正在处理C++中的联合体,并希望有一个函数模板,根据模板参数访问活动联合成员。 代码类似于(doSomething仅为示例): union Union { int16_t i16; int32_t i32; }; enum class ActiveMember { I1...