네트웍을 하다보면 4바이트 정렬 때문에 깨지는 경우가 많다.
당연히 4바이트 정렬처리 해주는 게 좋지만 어디 다들 그렇게 생각하겠는가?
네트웍상으로 낭비가 아닌가? 그래서 팩킹을 하는데 이놈의 ARM계열에서는
아래처럼
#pragma pack(1)
하면 안된다. 에뮬이야 dll이니까 되겠지만 실제 폰에서는 안된다.
그래서
#ifdef __arm // arm컴파일러의 경우에 한하여
typedef __packed struct _S_PRO_Default // 구조체의 앞에 __packed 를 기입해 주면 된다.
{
byte Hoss;
int PROTOCOL_ID;
int LENGTH;
}S_PRO_Default;
이러면 해당 구조체는 1바이트 단위로 팩킹된다.
sizeof하면 9로 나오게 되는 것이다. 이것 땜에 고생한 기억이 있었는데 1년이 지나 다시 겪게 되었다.
사람은 좀 메모를 해두어야 하는데 내가 그러지 못해서 다시 고생한 것이다. ㅋㅋㅋ
그래서 적어둔다. 이 ARM쪽 일을 얼마나 더 할지 모르지만..
www.gamehon.comwww.gamemotor.com
'Game Programming' 카테고리의 다른 글
서버 프로토콜은 어떻게 해야 하는가? (0) | 2007.11.04 |
---|---|
충돌체크의 간단한 수학적 풀이 (0) | 2007.11.02 |
플로트랜드 모바일 (0) | 2007.09.29 |
DEVC++ DX사용 (0) | 2007.09.20 |
심심풀이 배선게임~ (0) | 2007.08.28 |