나는 이전에 편하게 노동 조합을 사용했다. 오늘 이 게시물을 읽었을 때 놀랐 으며이 코드를 알게되었습니다. union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down …
나는 배웠지 만 실제로 노동 조합을 얻지는 못한다. 내가 통과하는 모든 C 또는 C ++ 텍스트는 그것들을 소개하지만 (때로는 통과 할 때도 있지만) 왜 또는 어디에서 사용해야하는지에 대한 실제적인 예는 거의 없습니다. 현대 (또는 레거시) 사례에서 노동 조합은 언제 유용할까요? 내 두 가지 추측은 작업 할 공간이 매우 제한적이거나 API …
일부 C ++ 컴파일러는 표준 C ++에 대한 확장으로 익명 공용체 및 구조체를 허용합니다. 때때로 매우 도움이되는 약간의 통 사적 설탕입니다. 이것이 표준의 일부가되는 것을 막는 근거는 무엇입니까? 기술적 인 장애물이 있습니까? 철학적입니까? 아니면 정당화 할 필요가 충분하지 않습니까? 다음은 제가 말하는 내용의 샘플입니다. struct vector3 { union { struct …
seastar 소스 코드를 읽을 때 tx_side멤버가 하나 뿐인 공용 구조체가 있음을 알았습니다 . 이것은 특정 문제를 다루기위한 해킹입니까? 참고로 tx_side아래 구조를 붙여 넣습니다 . union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque<work_item*> pending_fifo; } a; } _tx;