我一直在浏览有关在结构中初始化联合的问题的 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”的标量初始值设定项的大括号</p>
和
dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,{0, "tun"}};
这给出了错误:'dc_netif_filter::<匿名联合>'的初始化程序太多</p>
我如何声明这样的 dc_netif_filter_t ?
我在 ubuntu 上使用 g++。请注意,dc_netif_filter_t 不是我可以修改的结构,因为它来自第三方项目。
**编辑:正如我已经解释过的,我只能初始化一个字段。问题是,与
dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,"tun0"};
我收到一个转换错误:从 'const char*' 到 'uint32_t 的无效转换
谢谢