找回密码
 立即注册
首页 业界区 安全 C语言typedef用法

C语言typedef用法

闾丘婉奕 7 天前
良好的代码习惯高效的类型定义在项目中扮演着至关重要的角色。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,我们可以简化结构体、指针、函数指针等复杂类型的声明,让代码更清晰、表达更简洁。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册