(一)typedef/define的基本概念
1.typedef
typedef int BOOL; #define TRUE 1 #define FALSE 0
定义好之后,就可以像使用基本类型数据一样使用它了,如下面的代码所示:
BOOL bflag=TRUE;
2.与define的区别
typedef 是在编译过程中被解析的,而#define
是在编译之前的预处理时被破解的;#define
只是对所定义的别名的简单替换,而typedef可以做到#define
能做到的所有事情,而且可以做得更好
(二)typedef void (*T) (void *)
typedef void (*T) (void * );定义了一个指向函数的指针T, 其 返回值 void 类型,参数也是后面的(void *) 接下来我们就可以直接使用 T 来定义这种 指针变量 ,比如:
T fn1; //等价于void fn1 (void *); 使用:void func(void *); //声明函数 T fn1; //定义变量 fn1=func; //赋值 (*fn1)(); //执行
对于typedef void(*T)(void *),我们进行一层层的剖析
首先写成 void(*T)() 可以看出 T是一个指针,是一个指向返回值为void ,参数为空的类型的函数指针
在加上(void *) 为 void(*T)(void *) 就变成了一个指向 返回值为void,参数为void *类型的指针
在加上上typedef ,加上后,T就不再是一个函数指针了,它代表着一种类型,这种类型可以定义一个 指向 返回值为void,参数为void *类型的指针
比如:
T t; void func(void *); t=func
标签:typedef,fn1,void,func,define,指针 From: https://www.cnblogs.com/imreW/p/17290747.html