요소가 조건부로 존재하는 C 구조체를 정의하려고합니다.조건부로 요소가있는 구조체 정의
typedef struct flowHeader {
int magicNum ;
int trafficType ;
// few other int parameters
int flowDirection; // Present ONLY if trafficType = TT_V6
// few other int parameters
} t_flowHeader ;
내가이 데이터 유형을 정의하는 가장 좋은 방법 알고 싶어 : 여기 정의 할 헤더의 구체적인 예이다. 이 헤더를 유선상으로 수신되는 버퍼에 적용하고 싶습니다. 한 요소가 없기 때문에 구조의 크기는 4 바이트로 다양하며이를 관리하는 방법에 어려움을 겪고 있습니까?
# define TT_V6 31
# define FD_NA 0
int flowDir ;
unsigned char buf[ MAXSZ ] ;
t_flowHeader * hdr ;
hdr = (t_flowHeader *) buf ;
if (hdr->trafficType == TT_V6) {
flowDir = hdr->flowDirection ;
} else {
flowDir = FD_NA ;
}
..
역 참조하기 전에 buf에서 4bytes를 재정렬하십시오. –
이것은 옵션이 아닙니다. 어떤 시점에서이 구조를 직렬화해야하는 논리가 있습니다 ... 따라서 순서 변경은 선택 사항이 아닙니다. 또한 그것은 내 머리글을 들어오는 메시지 버퍼에 캐스팅하여 얻는 속도 이점을 완전히 바꿀 것입니다. – user2610390