2011年4月24日日曜日

構造体パディング


struct COMMChunk
{
  DWORD ckID;
  long ckSize;
  short numChannels;
  unsigned long numSampleFrames;
...
};

 とかやるんだけどパディングはいってずれちゃうからしかたなしに

struct COMMChunk
{
  BYTE COMM[4];
  DWORD ckSizeCOMM;
  BYTE numChannels[2];
  BYTE numSampleFrames[4];
...
};

 とかやるけど、これはこれで鬱陶しい……。
なんかいい方法ないのドラえもーん?
 
 #pragma pack
っつーのでアライメント変更できるみたい。

#pragma pack(push, 2)
struct COMMChunk
{
  DWORD COMM;
  long ckSizeCOMM;
  short numChannels;
  unsigned long numSampleFrames;
  short sampleSize;
  BYTE sampleRate[ 10 ];
};
#pragma pack(pop)

 としたらうまくできた。

0 件のコメント: