在剖析epoll源代码的时候,发现了一个很有用的宏,该宏的目的主要是解决一些条件满足,一旦无法满足这些条件,将会在编译阶段提示错误,而不是到运行阶段出现crash。
宏定义如下:
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) //如果条件*满足就直接char[-1],此时将会出现编译错误。
宏的使用:
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);
转帖:http://blog.youkuaiyun.com/tenfyguo/article/details/12151629
宏定义如下:
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) //如果条件*满足就直接char[-1],此时将会出现编译错误。
宏的使用:
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);
转帖:http://blog.youkuaiyun.com/tenfyguo/article/details/12151629
本文介绍了一种在epoll源代码中使用的宏BUILD_BUG_ON,该宏可在编译阶段检查某些条件是否满足,若不满足则会触发编译错误而非运行时崩溃。通过具体示例展示了宏的应用。

被折叠的 条评论
为什么被折叠?



