使用匿名结构初始化联合
Initializing a union with anonymous structs
我正在将树结构合并到一个库中。 有问题的库有一个编译时检查,防止用户在合并时留下未初始化的变量,以及其他检查。 我尝试合并的树结构具有这样的结构
struct TreeNode
{
int Dimension;
int ChildIndex;
union {
struct
{
float LMax;
float RMin;
} Node;
struct
{
int Start;
int Size;
} Leaf;
};
TreeNode()
: Dimension()
, ChildIndex()
{}
};
当我合并这个类并编译库时,我会收到-Wmissing-field-initializers
关于未由我初始化的联合的警告。
我正在寻找一种在TreeNode
的构造函数中初始化联合的方法。 谁能指出我如何做到这一点? 我还寻求建议,如果TreeNode可以以更好的方式构建。
据我从评论中了解,您只想抑制警告。另外,看起来您正在使用 GCC。您可以像下面这样实现这一点:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
struct TreeNode { ... };
#pragma GCC diagnostic pop
第二行禁止显示其后面代码中的-Wmissing-field-initializers
警告。由于您不想在所有代码中禁止显示此警告,因此需要保存警告设置(第一行(并在以后(最后一行(还原它。有关更多信息,请考虑阅读 GCC 文档。
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组