構造体でユニオンを初期化する問題に関して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 :: <anonymous union>'</p>の初期化子が多すぎます
そのようなdc_netif_filter_tを宣言するにはどうすればよいですか?
私はubuntuでg++を使用しています。dc_netif_filter_tは、サードパーティのプロジェクトからのものであるため、変更できる構造体ではないことに注意してください。
**編集:説明したように、初期化できるのは1つのフィールドのみです。問題は
dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME,"tun0"};
変換エラーが発生します:'constchar*'から'uint32_tへの無効な変換
ありがとう