一种bug的check方式

来源:互联网 发布:淘宝重复铺货怎么处罚 编辑:程序博客网 时间:2024/05/23 19:15

宏定义如下:

#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))

这个函数也就是在检查e是否是0,如果不是0则编译时候报错。

分析:

!!(e): a)e不为0的时候,结果是1;

         b)e为0的时候,结果是0;

struct { int:-!!(e);}:a)e不为0的时候,为int:-1;

                                  b)e为0的时候,为int:0;

sizeof(  struct { int:-!!(e);}   ):a)为int:-1则编译时候报错;

                                                    b)为int:0时候编译没问题;

这样就可以检查e是否是0了


0 0
原创粉丝点击