C语言typedef用法

[复制链接]
发表于 2025-10-29 19:26:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
精良的代码风俗和高效的范例界说在项目中饰演着至关紧张的脚色。typedef,它不光是一个语法糖,更是提拔代码质量和可维护性的利器。在这篇文章中,将为你先容typedef  4 种应用方式。
应用一、为根本数据范例界说新的范例名

用uint32_t更换unsigned int声明变量
  1. /* 变量名重定义 */
  2. typedef unsigned int uint32_t;
  3. /* 定义一个`unsigned int`类型的变量 */
  4. uint32_t count = 0;
复制代码
应用二、为自界说数据范例(布局体、共用体和摆列范例)界说简便的范例名称

使用布局体界说以及声明布局体变量:
  1. struct TagPoint
  2. {
  3.     double x;
  4.     double y;
  5.     double z;
  6. };/* 定义一个三维坐标结构体 */
  7. /* 声明一个三维坐标点 */
  8. struct TagPoint point = {0, 0, 0};
复制代码
使用typedef取代布局体界说以及声明布局体变量:
  1. typedef struct
  2. {
  3.     double x;
  4.     double y;
  5.     double z;
  6. } TagPoint;/* 定义一个三维坐标结构体 */
  7. /* 声明一个三维坐标点 */
  8. TagPoint point = {0, 0, 0};
复制代码
应用三、界说数组范例

界说多个同纬度的数组:
  1. int v[3];
  2. int i[3];
复制代码
使用typedef重界说:
  1. /* 定义数组类型 */
  2. typedef int arry_int_3[3];
  3. /* 等价于 int v[3] */
  4. arry_int_3 v;
复制代码
应用四、界说指针范例

1、界说数组指针范例
  1. /* 普通数组指针 */
  2. int (*arr_p)[5];//定义了一个数组指针变量arr_p,arr_p可以指向一个int a[5]的一维数组
  3. /* 使用typedef */
  4. typedef int(*Arr_P)[5];//定义一个指针类型,该类型的指针可以指向含5个int元素的一维数组
  5. int a[5] = {1,2,3,4,5};
  6. Arr_P p;//定义数组指针变量p
  7. p= &a;//完全合法,无警告   
  8. p= (Arr_P)&a;//类型强制转换为Arr_P,完全合法,无警告
复制代码
2、界说函数指针范例

有一个函数原型如下:
  1. /* 函数原型 */
  2. int32_t write_adc_reg(uint32_t reg_addr, uint32_t data, uint32_t chip_id);
  3. int32_t write_spi_reg(uint32_t reg_addr, uint32_t data, uint32_t chip_id);
复制代码
平凡界说一个函数指针指向这个函数:
  1. /* 普通函数指针定义和使用 */
  2. int32_t (*write_adc_reg_p)(uint32_t, uint32_t, uint32_t);
  3. int32_t (*write_spi_reg_p)(uint32_t, uint32_t, uint32_t);
  4. /* 选择不同的写入接口 */
  5. write_adc_reg_p = write_adc_reg;
  6. write_spi_reg_p = write_spi_reg;
  7. /* 调用 */
  8. int32_t result = write_reg_p(0x10, 0x55, 0);
复制代码
使用typedef:
  1. /* 定义函数指针类型 */
  2. typedef int32_t (*WriteReg_P)(uint32_t, uint32_t, uint32_t);
  3. /* 声明两个函数指针变量 */
  4. WriteReg_P write_adc_reg_p = write_adc_reg;
  5. WriteReg_P write_spi_reg_p = write_spi_reg;
  6. /* 调用 */
  7. int32_t adc_val = write_adc_reg_p(0x10, 0x55, 0);
复制代码
五、总结

typedef 是 C 语言中非常实用的工具,它不光能提拔代码的可读性,还便于后续维护和扩展。在嵌入式开辟中,通过公道使用 typedef,我们可以简化布局体、指针、函数指针等复杂范例的声明,让代码更清楚、表达更简便。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表