BUILD_BUG_ON

BUILD_BUG_ON()

在编译时调用,可以提前发现错误,这里利用了一些不常用的特性,当数组个数元素为负时会发生编译器错误,对于位域宽度而言,其为负数时也会发生编译器错误。

 

1 #define BUILD_BUG_ON_ZERO(e)  (sizeof(struct{int : -!!(e);}))
2 #define BUILD_BUG_ON_NULL(e)  ((void*)sizeof(struct{int : -!!(e);}))
3 
4 #define BUILD_BUG_ON(condition)  ((void)BUILD_BUG_ON_ZERO(condition))
5 
6 #define MAYBE_BUILD_BUG_ON(condition)  ((void)sizeof(char[1 - 2 * !!(condition)]))

posted on 2013-08-06 18:51  阿加  阅读(1432)  评论(0编辑  收藏  举报

导航