typedef用法
将为你介绍typedef4 种应用方式。应用一、为基本数据类型定义新的类型名用uint32_t替代unsigned int声明变量/* 变量名重定义 */typedef unsigned int uint32_t;/* 定义一个unsigned int类型的变量 */uint32_t count 0;应用二、为自定义数据类型结构体、共用体和枚举类型定义简洁的类型名称使用结构体定义以及声明结构体变量struct TagPoint{double x;double y;double z;};/* 定义一个三维坐标结构体 *//* 声明一个三维坐标点 */struct TagPoint point {0, 0, 0};使用typedef代替结构体定义以及声明结构体变量typedef struct{double x;double y;double z;} TagPoint;/* 定义一个三维坐标结构体 *//* 声明一个三维坐标点 */TagPoint point {0, 0, 0};应用三、定义数组类型定义多个同纬度的数组int v[3];int i[3];使用typedef重定义/* 定义数组类型 */typedef int arry_int_3[3];/* 等价于 int v[3] */arry_int_3 v;应用四、定义指针类型1、定义数组指针类型/* 普通数组指针 */int (*arr_p)[5];//定义了一个数组指针变量arr_parr_p可以指向一个int a[5]的一维数组/* 使用typedef */typedef int(*Arr_P)[5];//定义一个指针类型该类型的指针可以指向含5个int元素的一维数组int a[5] {1,2,3,4,5};Arr_P p;//定义数组指针变量pp a;//完全合法无警告p (Arr_P)a;//类型强制转换为Arr_P完全合法无警告2、定义函数指针类型有一个函数原型如下/* 函数原型 */int32_t write_adc_reg(uint32_t reg_addr, uint32_t data, uint32_t chip_id);int32_t write_spi_reg(uint32_t reg_addr, uint32_t data, uint32_t chip_id);普通定义一个函数指针指向这个函数/* 普通函数指针定义和使用 */int32_t (*write_adc_reg_p)(uint32_t, uint32_t, uint32_t);int32_t (*write_spi_reg_p)(uint32_t, uint32_t, uint32_t);/* 选择不同的写入接口 */write_adc_reg_p write_adc_reg;write_spi_reg_p write_spi_reg;/* 调用 */int32_t result write_reg_p(0x10, 0x55, 0);使用typedef/* 定义函数指针类型 */typedef int32_t (*WriteReg_P)(uint32_t, uint32_t, uint32_t);/* 声明两个函数指针变量 */WriteReg_P write_adc_reg_p write_adc_reg;WriteReg_P write_spi_reg_p write_spi_reg;/* 调用 */int32_t adc_val write_adc_reg_p(0x10, 0x55, 0);五、总结typedef是 C 语言中非常实用的工具它不仅能提升代码的可读性还便于后续维护和扩展。在嵌入式开发中通过合理使用typedef我们可以简化结构体、指针、函数指针等复杂类型的声明让代码更清晰、表达更简洁。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2466147.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!