비트 필드의 endian 모드에 관해서

송지석의 이미지

16비트로 된 bit field를 가지고 있는 데이터형이 있습니다.

typedef struct {
	short myflag0 :1,
		myflag1 :1,
.....
		myflag15:1
} flags_t;

네트웍으로 서로 다른 플랫폼에서 flag로 사용하려는데요

보내는 쪽은 Big-endian 시스템(Motorola PPC)이고 받는 쪽은 Little-endian (인텔/리눅스)입니다.

받는 쪽에서 flag = ntohs(flag) 로 변환해서 데이터를 보면
비트필드가 완전히 반대로 되어있는 것으로 보입니다.
myflag0을 1로 세팅했는데 받아서 보면 myflag15가 세팅되어있는 식으로요.

typedef 내용을 싹 바꿔서 Little-endian용으로 순서가 반대로 된 타입을 새로 만들면 되긴 되겠지만 이런 데이터 형이 더 있을 것이라서, 그리고 포팅에 유용하지 않을 것 같은데요.

gcc 컴파일러 옵션이나 pragma, __attribute__ 같은 키워드로 비트필드의 endian 모드를 설정할 수 있는가요?