引数の制限もチェックするマクロを定義したいと思います。たとえば、次のようにCのマクロでのパラメータチェック
typedef unsigned char Byte;
#define BQDATA 3
#define MAX_BQ_SIZE (255-BQDATA)
#define BQ(SIZE,NAME) \
#if SIZE > MAX_BQ_SIZE \
#error BQ NAME exceeds maximum size \
#endif \
Byte NAME[BQDATA+SIZE+1] = {BQDATA,BQDATA,BQDATA+SIZE}
それが発生した場合、だから:
BQ(300,bigq);
フラグエラーをだろうこと。
http://stackoverflow.com/questions/3385515/static-assert-in-cまたはhttp://stackoverflow.com/questions/174356/ways-to-への回答からテクニックの1つを実装できます。 assert-expressions-at-build-time-in-cを実行します。また、 '(BQDATA)+(SIZE)+ 1'のようにマクロ引数を常にparanthesisに入れるべきです。そうしないと、演算子の優先順位に問題が生じます。 –