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)

求解……

作者: shaohui973   发布时间: 2011-02-22

我想,应该是表示这是一个表达式吧

作者: amarant   发布时间: 2011-02-22

回复 amarant


    LS正解。。。不过这个需要编译器特殊支持吧

作者: cluter   发布时间: 2011-02-22