闾丘婉奕 发表于 2025-10-29 22:00:07

C语言typedef用法

良好的代码习惯和高效的类型定义在项目中扮演着至关重要的角色。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;
int i;使用typedef重定义:
/* 定义数组类型 */
typedef int arry_int_3;

/* 等价于 int v */
arry_int_3 v;应用四、定义指针类型

1、定义数组指针类型

/* 普通数组指针 */
int (*arr_p);//定义了一个数组指针变量arr_p,arr_p可以指向一个int a的一维数组

/* 使用typedef */
typedef int(*Arr_P);//定义一个指针类型,该类型的指针可以指向含5个int元素的一维数组

int a = {1,2,3,4,5};
Arr_P p;//定义数组指针变量p
p= &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,我们可以简化结构体、指针、函数指针等复杂类型的声明,让代码更清晰、表达更简洁。

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

嶝扁 发表于 2025-11-29 19:39:24

很好很强大我过来先占个楼 待编辑

坪钗 发表于 2025-12-4 20:13:48

很好很强大我过来先占个楼 待编辑

醋辛 发表于 2025-12-14 06:30:10

分享、互助 让互联网精神温暖你我

莅耸 发表于 2025-12-14 11:40:11

懂技术并乐意极积无私分享的人越来越少。珍惜

打阗渖 发表于 2026-1-4 20:50:24

感谢分享,学习下。

舒菀菀 发表于 2026-1-12 06:50:12

感谢发布原创作品,程序园因你更精彩

僭墙覆 发表于 2026-1-18 12:33:32

感谢发布原创作品,程序园因你更精彩

篁瞑普 发表于 2026-1-18 13:26:29

感谢,下载保存了

蚣澡 发表于 2026-1-19 02:22:39

谢谢分享,辛苦了

趣侮 发表于 2026-1-19 09:57:56

新版吗?好像是停更了吧。

染悄 发表于 2026-1-21 05:58:18

谢谢楼主提供!

师佳思 发表于 2026-1-22 04:50:16

收藏一下   不知道什么时候能用到

猷浮 发表于 2026-1-25 02:40:22

新版吗?好像是停更了吧。

山芷兰 发表于 2026-1-25 12:18:11

yyds。多谢分享

铜坠匍 发表于 2026-1-26 11:53:14

这个有用。

阜逐忍 发表于 2026-1-27 02:02:29

这个好,看起来很实用

谷江雪 发表于 2026-1-30 02:48:55

过来提前占个楼

普料飕 发表于 2026-2-4 04:21:33

过来提前占个楼

遇玷 发表于 2026-2-6 08:56:46

感谢发布原创作品,程序园因你更精彩
页: [1] 2
查看完整版本: C语言typedef用法