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

浙公网安备 33010602011771号