C/C++ typedef关键字的几种简单用法

typedef 在C/C++ 是用来重命名的关键字。现在我就简单的总结一下typedef的用法及几种常见的简单用处。
1、当你不想用极长的一段代码来定义一个数据类型是,可用此来重新命名,如下:

typedef std::map<strCarIndex, STRU_TrafficCarData> MapCarID2CarData

以此方式,后面在遍历查找增加删除等操作时便方便了许多。

MapCarID2CarData::iterator it = g_mapCarID2Data.begin();

2、结构体的typedef
在C/C++ 中,特别是C语言中,结构体的定义时typedef非常广泛

typedef struct _CARATTR
{
    int m_nColor;
    int m_nBrand;
    string m_strCarNo;
}CARATTR, *pCARATTR;
CARATTR struCar1;
pCARATTR pStrCar2;

这样定义,则CARATTR表示struct _CARATTR的一个对象,pStrCar2表示CARATTR的一个指针。知道有这种方式就好,一般我用的比较少。
另外,这种方式仅限于C语言,C++似乎并不需要这样加一个typedef这样做。
3、函数指针的定义,特别用于回调函数与导出函数
今天一同事问我,我才有了写一篇播客的冲动。作为初学者,也许这个是有一点难理解。
回调函数,按照我的理解,另一个线程中需要执行的函数或方法,只是函数体的代码实现在本线程中。例如:一个车辆扫描器,一直在循环的工作,查找是否当前范围内有车辆进过。这就是一个线程。当有车辆进过时,在此线程中执行一个动作。这个动作是什么呢?便是我们调用者传过去的一个函数地址。此函数地址指向我们的程序的一个函数。这就是所谓的“函数体的代码实现在本线程中”。后续再总结回调函数使用
在传入函数地址时,在两个线程中都要定义此函数类型。定义方式如下:

typedef typename(*Func)(typename1, typename2, ...);

第一个typename函数返回类型,后面的typename1, typename2表示函数的参数类型。
导出函数的使用方法也是同样的。

发布了9 篇原创文章 · 获赞 1 · 访问量 6387
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览