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)]))
原文地址:https://www.cnblogs.com/openix/p/3239497.html