typeof

 typeof()用于返回表达式或参数的类型

 typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。

1,表达式的的例子:
typeof(x[0](1))
这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。
如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。
以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于表达式不会被执行,所以不会调用foo函数。
extern int foo();
typeof(foo()) var;

2,参数的例子:
typeof(int *) a,b;
等价于: int *a,*b;

当做某件事情(比如等待信号),直到做成功为止

#define TEMP_FAILURE_RETRY(exp) ({         \
    typeof (exp) _rc;                      \
    do {                                   \
        _rc = (exp);                       \
    } while (_rc == -1 && errno == EINTR); \
    _rc; })

 最后一行 _rc;是返回值

  int a = ({7 + 8; 9;});
  cout << "a:" << a << endl;

输出9

posted @ 2015-12-02 13:20  牧 天  阅读(275)  评论(0)    收藏  举报