我想定义一个宏,它也将检查其参数的限制。例如:
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);
它会标记错误。
最佳答案
如果size
和max_bq_size
是编译时常量,则可以使用#define BQ(size, name)
BUILD_BUG_ON(size > max_bq_size);
。您没有收到自定义消息,但至少有一个错误。
关于c - C宏中的参数检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9369789/