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;
ようにとObjective-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