일부 Objective-C++ 코드를 일반 Objective-C로 변환하고 구조체에 문제가 있습니다. 두 언어 모두에 대해이 .h 파일에서 선언 된 구조체가 있습니다. C++에서 Objective-C 및 C++ 구조체의 크기
struct BasicNIDSHeader {
short messageCode;
short messageDate;
int messageTime;
int messageLength;
short sourceID;
short destID;
short numberOfBlocks;
};
이 구조체는 내가 그들을 사용이
struct BasicNIDSHeader header;
코드를 할
BasicNIDSHeader header;
추천하고 목표 - C에서 선언되고 실제로 두 언어에서 동일 .
memset(&header, 0, sizeof(header));
[[fileHandle readDataOfLength:sizeof(header)] getBytes:&header];
여기서 fileHandle은 NSFileHandle입니다. ,는 sizeof (헤더) = 20
이 발생하거나하는 방법을 수정하는 이유 어떤 아이디어 오브젝티브 C 사용시
문제는 원래의 C++ 코드는 sizeof (헤더) = 18에보다? 코드는 C++ 에서처럼 크기에 의존합니다. 나는 단지 그것을 하드 코딩 할 수 있지만, 왜 그것이 일어나고 있는지 더 잘 이해하고 싶습니다. 게다가 하드 코딩 상수는 싫어.
감사합니다.
그것은라고 패딩. –
typedef를 사용할 수 있으며 모든 선언을 수정할 필요가 없습니다. – sidyll
두 언어 모두에서'& header','& header.messageCode','& header.messageDate' 등을 인쇄하여 변경이있는 곳을 볼 수 있으며, 틈이 있는지 또는 끝에 패딩이 있는지 확인할 수 있습니다. – dasblinkenlight