typedef int (*P)(char *(*)());
int (*P)(char *(*)());
对我来说,两者似乎都在做同样的事情,那么 typedef
是用来干什么的?
typedef int (*P)(char *(*)());
int main() {
int (*Q)(char *(*)());
P R;
}
Q
和R
具有完全相同的类型。typedef
定义了P
为一个函数指针类型。第二个版本将P
定义为一个函数指针。
类型可用于声明变量。在此之后:
typedef int (*P)(char *(*)());
您可以使用
P p;
这将相当于
int (*p)(char *(*)());
简单的答案是你通过typedef创建了一个新的数据类型。
让我们举一个简单的例子,在嵌入式系统中我们只使用无符号数。 现在一种方式是我写
unsigned int xyz;
所以我需要在所有地方都输入无符号..如果我忘记在某个地方输入无符号,那么在代码发布后要找出错误会非常困难。所以简单的方法是
typedef unsigned int uint;
现在你可以使用uint作为数据类型。所以,每当解析器遇到uint时,它将把它读取为无符号整数。
因此,在您的情况下,您可以在代码中使用P作为数据类型。就像在第一个例子中一样。
P xyz ;
会被解析为
int (*xyz)(char *(*)());