__typeof__(var) 是gcc对C语言的一个扩展保留字,用于声明变量类型,var可以是数据类型(int, char*..),也可以是变量表达式。
define DEFINE_MY_TYPE(type, name) __thread __typeof__(type) my_var_##name
DEFINE_MY_TYPE(int, one); //It is equivalent to '__thread int my_var_'; which is a thread variable.
int main()
{
__typeof__(int *) x; //It is equivalent to 'int *x';
__typeof__(int) a;//It is equivalent to 'int a';
__typeof__(*x) y;//It is equivalent to 'int y';
__typeof__(&a) b;//It is equivalent to 'int b';
__typeof__(__typeof__(int *)[4]) z; //It is equivalent to 'int *z[4]';
y = *x;
b = &a;
z[0] = x;
z[1] = &a;
return 0;
}