linux内核源码中的小括号表示什么含义???
在include/linux/wait.h文件里,有对于进程休眠的宏定义如下:
#define wait_event_interruptible(wq, condition) \
({ \
int __ret = 0; \
if (!(condition)) \
__wait_event_interruptible(wq, condition, __ret); \
__ret; \
})
这里的括号什么作用?我试过应用程序,如果单单这么比较 if({int __ret = 0;__ret;} ==__ret),编译会报错;但是加上()就可以了:if(({int __ret = 0;__ret;} )==__ret)
求解……
#define wait_event_interruptible(wq, condition) \
({ \
int __ret = 0; \
if (!(condition)) \
__wait_event_interruptible(wq, condition, __ret); \
__ret; \
})
这里的括号什么作用?我试过应用程序,如果单单这么比较 if({int __ret = 0;__ret;} ==__ret),编译会报错;但是加上()就可以了:if(({int __ret = 0;__ret;} )==__ret)
求解……
作者: shaohui973 发布时间: 2011-02-22
我想,应该是表示这是一个表达式吧
作者: amarant 发布时间: 2011-02-22
回复 amarant
LS正解。。。不过这个需要编译器特殊支持吧
LS正解。。。不过这个需要编译器特殊支持吧
作者: cluter 发布时间: 2011-02-22