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

 

posted @   ImreW  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示