C语言基础:typedef的使用 |
您所在的位置:网站首页 › c语言结构体类型定义的关键词是什么 › C语言基础:typedef的使用 |
本文研究C语言中typedef关键字的作用。 文章目录 1 typedef关键字的作用2 typedef关键字的场景2.1 重新定义基本类型2.2 为变量定义专属类型2.3 定义结构体、枚举量、数组 3 总结 1 typedef关键字的作用本科学过C语言的朋友都知道数据类型的概念。C语言中有整型,如char、int、short等等;也有浮点类型,如float、double。 typedef关键字就是给这些数据类型起一个别的名字,然后用这个自己起的名字来定义变量。比如如下语句就把char类型起了个新的名字叫int8。然后用int8定义了一个变量a1。 typedef char int8; int8 a1;那么为什么不能直接用基础类型来定义变量,本文就研究其中的原因。 2 typedef关键字的场景 2.1 重新定义基本类型Simulink生成的代码中,在rtwtypes.h头文件中专门有一组typedef,它们把一些基本类型,如char、float等,定义成别的名字。 另外,32位系统和64位系统中,基础类型对应的字节长度可能不同。如果整个工程中的代码全都是基础类型,再移植代码到新系统的时候可能要全部改一遍。而如果用了typedef,只需要改一下typedef这一句就行了。 2.2 为变量定义专属类型首先思考一个场景。一个C语言工程中有很多函数,他们都需要传参数ObjNum,输入雷达检测到的目标个数。由于在函数定义的时候需要明确传递参数的数据类型,所以这些函数就定义成这样: void function_1(uint8 ObjNum); void function_2(uint8 ObjNum); void function_3(uint8 ObjNum);uint8最大可以表示255,如果想把ObjNum改成uint16类型的,就需要改3次(在大的工程中不止3个),所以一个好的办法就是用typedef,给这个变量定义一个专属的类型名称,如下: typedef uint8 ObjNumType; void function_1(ObjNumType ObjNum); void function_2(ObjNumType ObjNum); void function_3(ObjNumType ObjNum);这样,只需要在typedef把uint8改成uint16就可以。 2.3 定义结构体、枚举量、数组结构体由程序员自己定义,通常是把一些有着共同特征的变量打包在一起,以便增强可读性。例如,汽车动力学相关的变量就包括车速、横摆角速度、加速踏板等,可以把他们打包到一起定义一个结构体类型: typedef struct VehicleDynamics_Tag { float32 VehicleSpeed; float32 Yawrate; bool AccelerationPedal; } VehicleDynamics_Type;然后再用结构体类型定义一个结构体变量: VehicleDynamics_Type vehicle_dynamics;另外,枚举量的定义也类似,譬如定义LKA功能状态: typedef enum LKAStatus_Tag { LKA_OFF= 0, LKA_STANDBY, LKA_ACTIVE, LKA_OVERRIDE } LKAStatus_Type;对于数组定义,可以看一个例子。 #include typedef unsigned char ObjID[10]; int main() { ObjID id; for (int i = 0; i >返回个人博客总目录 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |