用C宏参数检查 [英] parameter check in C macro
本文介绍了用C宏参数检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想定义一个宏也将检查它的参数限制。例如:
I would like to define a macro which will also check limits on its arguments. For example:
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}
所以,如果遇到:
So that if it encounters:
BQ(300,bigq);
这将标志错误。
推荐答案
如果尺寸
和 max_bq_size
编译期是时间常数可以使用的#define BQ(大小,名称)
的 BUILD_BUG_ON (大小> max_bq_size);
。你没有得到一个自定义的消息,但至少一个错误。
If size
and max_bq_size
are compile-time constants you can use #define BQ(size, name)
BUILD_BUG_ON(size > max_bq_size);
. You don't get a custom message, but at least an error.
这篇关于用C宏参数检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文