본문 바로가기
Game Programming

ARM 계열에서의 1바이트 팩킹?

by 게임혼 2007. 10. 22.

네트웍을 하다보면 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