关键数据结构/关键字
文件Mutex.h中:
#define MCHECK(ret) ({ __typeof__ (ret) errnum = (ret); \
if (__builtin_expect(errnum != 0, 0)) \
__assert_perror_fail (errnum, __FILE__, __LINE__, __func__);})
涉及到三个关键字:
1. __typeof__ (ret) 获取ret的数据类型;
2.__builtin_expect 函数原型:long __builtin_expect (long EXP, long C)
解释:如果表达式EXP成立(非0),则返回C;否则返回0. 结合上面的例子(如下)
if (__builtin_expect(errnum != 0, 0)) \
__assert_perror_fail (errnum, __FILE__, __LINE__, __func__);})
如果"errnum!=0 "成立,则返回C(=0),