構造体のユニオンを初期化する問題に関して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は、サードパーティーのプロジェクトのように変更できる構造体ではありません。
**編集:私が説明したように、私は1つのフィールドのみを初期化できます。コンパイラが言うようにtoo many initializers for ‘dc_netif_filter::< anonymous union>’
、のuint32_t「から「のconstのchar *」から無効な変換
おかげ
ユニオンのメンバーを1つだけ初期化します。 – Nick
*すべての*ユニオンのメンバーを初期化したくありません。 how about: 'dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME、" tun "};' – trojanfoe
これでbufを "tun"に設定してから、itf_nbに0を設定するにはどうすればいいですか? – djfoxmccloud