我想定义一个宏,它也将检查其参数的限制。例如:

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);

它会标记错误。

最佳答案

如果sizemax_bq_size是编译时常量,则可以使用#define BQ(size, name)BUILD_BUG_ON(size > max_bq_size);。您没有收到自定义消息,但至少有一个错误。

关于c - C宏中的参数检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9369789/

10-16 20:45