typedef和define
(一)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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了