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

在剖析epoll源代码的时候,发现了一个很有用的宏,该宏的目的主要是解决一些条件满足,一旦无法满足这些条件,将会在编译阶段提示错误,而不是到运行阶段出现crash。
宏定义如下:
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))  //如果条件*满足就直接char[-1],此时将会出现编译错误。

宏的使用:
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);

转帖:http://blog.csdn.net/tenfyguo/article/details/12151629

猜你喜欢

转载自carma2002.iteye.com/blog/2232520