2015-03-25 57 views
0

有没有人知道如何理解下面显示的代码的第四行?如何理解以下有关typedef的代码C

typedef short Signal; 
typedef struct Event Event; 
typedef struct Fsm Fsm; 
typedef void (*State)(Fsm *, Event const *); 
+0

看看这篇文章http://stackoverflow.com/questions/4295432/typedef-function-pointer – Mido 2015-03-25 01:18:56

回答

0

让我们通过的typedef逐一:

  • 第一行创建的类型short的别名。现在您可以编写Signal xyz = 0;并且它将等同于编写short xyz = 0;
  • 第二行和第三行允许您编写两个struct类型的变量的声明,而不使用struct关键字。换句话说,你现在可以写Fsm myFsm;,而不是写struct Fsm myFsm;
  • 最后一行声明了一个类型State对应于void函数指针采用指针来Fsm和指针Event

语法可能有点棘手,因为所有的括号和名称都是typedef-ed不在声明结尾。你可以告诉它是一个函数指针的类型定义,因为这个类型的名字在括号中,并且前面加了一个星号。 typedef的其余部分看起来非常像函数签名,所以结果很容易阅读。