BUILD_BUG_ON宏
来源:互联网 发布:淘宝秀福利 编辑:程序博客网 时间:2024/06/05 00:28
linux2.6.30中此宏定义如下
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
若condition非零,则!!(condition)为1,宏定义为((void)sizeof(char[1 - 2*1]))。因为char[]数组长度必须为正整数,所以编译器立即报错;
若condition为零,宏定义为((void)sizeof(char[1 - 2*0]))即((void)sizeof(char[1])),编译器顺利通过。
浅谈sizeof(char[])用法,列举些例子相信大家很容易理解:
表达式 值sizeof(char[0]) 0sizeof(char[1]) 1sizeof(int[1]) 4sizeof(short int[1]) 2sizeof(long long[2]) 16可见sizeof取得类型数组的长度。
OK,基于以上知识我们就能轻松解读下面这个类似的宏定义了
#define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
- BUILD_BUG_ON宏
- BUILD_BUG_ON宏的作用
- BUILD_BUG_ON
- BUILD_BUG_ON
- BUILD_BUG_ON
- linux内核常用宏学习——BUILD_BUG_ON
- BUILD_BUG_ON 检查编译时错误
- 宏
- 宏
- ##宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- ubuntu11.10我的vim设置
- android 模拟器 自定义分辨率 没有键盘
- 学生课程选修系统
- iPhone开发进阶(11篇)
- 英语中容易混淆的单词发音: 二
- BUILD_BUG_ON宏
- NYOJ 2 括号配对问题 数据结构栈的应用
- 菱形的第二种方法
- cmd.Parameters["@Input"].Value = System.DBNull.Value
- 左移右移测试
- 数据库的“键”别。
- 运算器——方法重载
- 顺序数组中插入相应的值用二分查找法
- 构造函数实例分析