구조체에서 유니온을 초기화하는 문제와 관련하여 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를 선언합니까?
나는 우분투에서 g ++를 사용하고 있습니다. dc_netif_filter_t는 제 3 자 프로젝트에서 제공하는 것처럼 수정할 수있는 구조체가 아닙니다.
** 편집 : 설명 했으므로 필드 하나만 초기화 할 수 있습니다. uint32_t '에
감사
유니온 멤버 중 하나만 초기화합니다. – Nick
* 모든 * 유니온의 멤버를 초기화하고 싶지는 않습니다. 방법에 대해 :'dc_netif_filter_t netif = {DC_NETIF_SELECT_NAME, "tun"}; ' – trojanfoe
그럼 buf를 "tun"으로 설정하고 나서 itf_nb를 0으로 설정합니까? – djfoxmccloud