Я конвертирую некоторый код Objective-C ++ в обычный Objective-C, и у меня возникли некоторые проблемы со структурами.Для обоих языков у меня есть структура, объявленная в файле .h следующим образом.
struct BasicNIDSHeader {
short messageCode;
short messageDate;
int messageTime;
int messageLength;
short sourceID;
short destID;
short numberOfBlocks;
};
В C ++ структура объявляется как
BasicNIDSHeader header;
и в Objective-C Iсделать это
struct BasicNIDSHeader header;
Код для их использования фактически одинаков на обоих языках.
memset(&header, 0, sizeof(header));
[[fileHandle readDataOfLength:sizeof(header)] getBytes:&header];
, где fileHandle - NSFileHandle.
Проблема в чемисходный код C ++, sizeof (header) = 18. При использовании Objective-C sizeof (header) = 20.
Есть идеи, почему это происходит или как это исправить?Код зависит от размера, как в C ++.Я могу просто жестко закодировать это, но хотел бы иметь лучшее понимание того, почему это происходит.Плюс я ненавижу жесткие константы.
Спасибо!