gpt4 book ai didi

c++ - 结构中的 union 初始化

转载 作者:太空狗 更新时间:2023-10-29 23:46:36 25 4
gpt4 key购买 nike

我一直在浏览有关在结构中初始化 union 的问题的 stackoverflow,但我没能把它弄好。

这是我的结构

typedef struct dc_netif_filter {
unsigned char filter_type;
union {
uint32_t itf_nb;
char * buf;
} value;
} dc_netif_filter_t;

在我的代码中,我尝试使用:

dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,{{0, "tun"}}};  

给出错误:用括号括起“uint32_t”类型的标量初始值设定项

dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,{0, "tun"}};  

给出错误:“dc_netif_filter:: ”的初始值设定项太多

我如何声明这样一个 dc_netif_filter_t ?

我在 ubuntu 上使用 g++。请注意,dc_netif_filter_t 不是我可以修改的结构,因为它来自第三方项目。

**编辑:正如我所解释的,我只能初始化一个字段。问题是用

dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,"tun0"}; 

我收到一个转换错误:从“const char*”到“uint32_t”的无效转换

谢谢

最佳答案

正如编译器所说,too many initializers for ‘dc_netif_filter::< anonymous union>’ .

只初始化一个字段,而不是两个。

使用字段名正确初始化:

dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME, { buf: "tun0" }}; 

关于c++ - 结构中的 union 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10174955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com