CS+ 空き領域の確保について

64Byteピッタリの構造体を作成したい場合ですが

typedef struct{
char cmd;
char len;
char str;
char pad[sizeof(USB_CMD)-offsetof(USB_CMD,pad)];
} USB_CMD;

のようにするとCS+で

(E) E0520020 usb_cmd.h(18):E0520020:Identifier "offsetof" is undefined usb_cmd.h 18 gen.mtpj

(E) E0520020 usb_cmd.h(18):E0520020:Identifier "USB_CMD" is undefined usb_cmd.h 18 gen.mtpj

(E) E0520020 usb_cmd.h(18):E0520020:Identifier "pad" is undefined usb_cmd.h 18 gen.mtpj

(E) E0520059 usb_cmd.h(18):E0520059:Function call is not allowed in a constant expression usb_cmd.h 18 gen.mtpj

等が発生するのです、(当たり前かな)ここでpad部分でこのUSB_CMDを64Byteに調整したいのですが

union等使用する方法もありますが、文字が多くなるため、このような方法でできないかと思っています

良い方法があるのでしょうか?

  • わわいさん
    回答ありがとうございます、STR_SIZEで確認できると思うのですが、USB_CMDというのはUSBの最大パケットサイズでして、このstrという部分が曲者で色々好きなように再定義して使用するようにしたいのですが、どれぐらい使用しているのか、もしくははみ出したらコンパイラーがエラーにしてくれればこれはすごい便利だと思いました、問題というのがこのpadですが危なそうなら1000とでもしておけばよいじゃないの、ということに着きますが、コンパイラーのプリプロセッサー機能でなんとかなればすばらしいなーと。