typecheck
来源:互联网 发布:淘宝精选安踏鞋 编辑:程序博客网 时间:2024/06/07 00:32
在kernel 2.6.30 的typecheck.h源码中有如下定义
#define typecheck(type,x) /
({ type __dummy; /
typeof(x) __dummy2; /
(void)(&__dummy == &__dummy2); /
1; /
})
这个有什么作用呢?下面举例来说明
#define time_after(a,b) /
(typecheck(unsigned long, a) && /
typecheck(unsigned long, b) && /
((long)(b) - (long)(a) < 0))
typecheck宏有两个参数,
第一个是一个类型,比如unsigned long,
第二个是一个变量,比如a。
它生成一个unsigned long类型的变量__dummy,
然后利用typeof生成和a同样类型的变量__dummy2,
比较__dummy和__dummy2的地址。
如果它们不是同样类型的指针比较,比如a不是unsigned long,
这时候编译器会有一个警告,让你注意到这个问题。
关于最后的1是复杂的表达式最后会有一个值,这个值就是1
简单的说就是检查x是不是type类型的变量,否则发出警告
0 0
- typecheck
- typecheck()
- typecheck
- typecheck() 作用
- typecheck()简析
- typecheck(type,x) 作用
- typecheck(type,x) 作用
- linux中 typecheck的分析
- linux内核中的typecheck函数
- acrobat 打印PDF时错误:Error: typecheck; OffendingCommand: show
- linux 内核宏定义:#define typecheck(type,x)
- ORA-04030: 在尝试分配 55813624 字节 (Typecheck,qry_text : qcpisqt) 时进程内存不足
- TexGen软件的源码开发
- poj 3768 递归(绘制图形)
- Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”
- linux shell 中"2>&1"含义
- 四:redis的sets类型相关操作(有序和无序集合)
- typecheck
- 最大最小值以及前驱后继操作最坏情况都为O(1)的顺序统计树
- 反向迭代器(rbegin,rend)
- codeforces 444C DZY Loves Colors 线段树乱搞
- 软件测试系列之黑白盒(三)
- 南邮ACM 1014 数据的插入与删除 JAVA解法
- poj Tiling
- 技术晋升的误区
- 实战Jquery(一)--用户名校验