2011-12-14 6 views
1

Xcode에서 구조체 정렬을 1 바이트 패킹으로 설정해야하고 "#pragma pack (1)"플러그 메그를 추가해도 아무런 효과가없는 것 같습니다. 다른 방법이 있습니까? 레거시 데이터를 읽어야하므로 손으로 포장 할 수 없습니다. 감사합니다,Xcode에서 구조체 정렬을 설정하는 방법

빌은 GCC 특정 지침 사용해야합니다

+1

적절한 직렬화/역 직렬화 루틴은 항상 올바른 옵션은 다음과 같습니다

편집

내가 언급하는 것을 잊지하지만 @Stephen 추를 했나요로, MSVC 스타일 pragma는 또한 GCC가 지원하는 포장 및 엔디안. –

+0

명령의 문제로 보이지 않으므로 (제 편집 참조) 관련 코드를 표시 할 수 있습니까? 아마도 더 많은 것이 관련되어있을 것입니다. 또는 이것은 아마도 당신이하려는 일에 대한 기본 행동입니다. – Geoffroy

답변

2

엑스 코드는 GCC를 사용 : 예를 들어 http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Type-Attributes.html

:

struct S { char f[3]; } __attribute__ ((aligned (1))); 

이 구조체는 따라서 최소 정렬됩니다 1 바이트.

패딩을 추가하지 말 것을 지정하는 packed 속성도 있습니다. 컴파일러에 의존 이상 http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html

+0

gcc도이 MSVC 스타일 pragma를 지원하지 않습니까? http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html –

+0

고마워.하지만 크기에는 아무런 영향을 미치지 않는 것 같습니다. BTW : Xcode의 버전 4를 사용하고 있는데 차이가 나는 경우 3에서 4 사이의 컴파일러가 변경됩니다. – Bill

+0

@BillFerster 현재까지는 llvm 프런트 엔드가 있더라도 여전히 gcc가 사용됩니다. . 스티븐 추 : 그 점에 대해 확신하지 못했습니다. 링크를 이용해 주셔서 감사합니다. – Geoffroy

관련 문제