길기는하지만 유감이지만 설명하는 것은 약간 복잡합니다.여러 파일에 C++ 유니온이 있습니다.
우리는 최근의 숙제를 위해 다음과 같은 프로그램 (많은 여기 간체)에 손을했다 :
- 데이터의 물리적 블록을 나타내는 구조의 일부 유형 (클래스/구조체) (단 문자 [1024])
이 블록 예struct p { char[1024] } struct l1 { int num; char name[20]; } struct l2 { int num; char type[10]; char filler[400]; bool flag; }
논리적 파티셔닝
나에게 분명한 것은 노동 조합
union {
p phy;
l1 logi1;
l2 logi2;
}
을 가지고 있었지만 문제는 사양 (나는 그것을 단순화하기 위해 절단 부분)의 일부분이었다 논리적 인 것들.
이제는 질문입니다 : 공용 영역에 필드를 추가하는 방법이 있습니까? 아니면 '실제'파일에서 '논리'블록을 허용하고 원시 블록으로 사용하는 다른 방법이 있습니까?
분명히하는 것이 좋겠습니다.
P. 이것은 이미 만기가되었고 reinterpret_cast
으로 해결했습니다. 좀 더 우아한 방법이 있는지 궁금 해서요.
엄격한 앨리어싱 규칙을 위반할 수 있으므로'reinterpret_cast'로이 문제를 해결할 수 없습니다. –
@Let_Me_Be 엄격한 앨리어싱 규칙이란 무엇입니까? – baruch
@ baruch http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule –