我想定義一個宏來檢查其參數的限制。例如: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-c的答案中的技術之一,斷言表達式,在建造時,在-C。另外,你應該總是把宏參數放在paranthesis中,比如'(BQDATA)+(SIZE)+ 1',否則你會遇到運算符優先級的問題。 – 2012-02-20 23:08:25