一个用于在编译阶段发现错误的技巧

来源:互联网 发布:开淘宝店做什么好 编辑:程序博客网 时间:2024/04/30 12:43

在剖析epoll源代码的时候,发现了一个很有用的宏,该宏的目的主要是解决一些条件满足,一旦无法满足这些条件,将会在编译阶段提示错误,而不是到运行阶段出现crash。

宏定义如下:

#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))  //如果条件*满足就直接char[-1],此时将会出现编译错误。

 

宏的使用:

BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);