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

相关文章:

猜你喜欢
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案