我正在将树结构合并到一个库中。 有问题的库具有编译时检查功能,可防止用户在合并时留下未初始化的变量,以及其他检查功能。 我尝试合并的树结构具有类似
的结构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。
答案 0 :(得分:0)
据我从评论中了解到的,您只是想抑制警告。另外,看起来您正在使用GCC。您可以像下面这样实现:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
struct TreeNode { ... };
#pragma GCC diagnostic pop
第二行在其后的代码中禁止显示-Wmissing-field-initializers
警告。由于您不想在所有代码中都禁止显示此警告,因此需要保存警告设置(第一行),稍后再恢复(最后一行)。有关更多信息,请考虑阅读GCC docs。