[软件资料] 使用typedef的优势

[复制链接]
 楼主| forgot 发表于 2025-2-24 14:13 | 显示全部楼层 |阅读模式
可以让代码更加清晰简洁使用typedef,我们可以在定义一个结构体、联合、枚举变量时,省去关键字struct,让代码更加简洁。
  1. typedef struct student
  2. {
  3.   char name[20];
  4.   int  age;
  5.   float score;
  6. }student_t, *student_ptr;

  7. student_t   stu = {"wit", 20, 99};
  8. student_t  *p1 = &stu;
  9. student_ptr p2 = &stu;


 楼主| forgot 发表于 2025-2-24 14:14 | 显示全部楼层
增加代码的可移植性
C语言的int类型,我们知道,在不同的编译器和平台下,所分配的存储字长不一样:可能是2个字节,可能是4个字节,也有可能是8个字节。如果我们在代码中想定义一个固定长度的数据类型,此时使用int,在不同的平台环境下运行可能会出现问题。
  1. #ifdef PIC_16
  2. typedef  unsigned long U32
  3. #else
  4. typedef unsigned int U32  
  5. #endif


 楼主| forgot 发表于 2025-2-24 14:14 | 显示全部楼层
比宏定义更好用
C语言的预处理指令#define用来定义一个宏,而typedef则用来声明一种类型的别名。typedef跟宏相比,不仅仅是简单的字符串替换,可以使用该类型同时定义多个同类型对象。
  1. typedef char* PCHAR1;
  2. #define PCHAR2 char *

  3. int main (void)
  4. {
  5.   PCHAR1 pch1, pch2;
  6.   PCHAR2 pch3, pch4;
  7.   printf ("sizeof pch1: %d\n", sizeof(pch1));
  8.   printf ("sizeof pch2: %d\n", sizeof(pch2));
  9.   printf ("sizeof pch3: %d\n", sizeof(pch3));
  10.   printf ("sizeof pch4: %d\n", sizeof(pch4));
  11.   return 0;
  12. }


 楼主| forgot 发表于 2025-2-24 14:15 | 显示全部楼层
让复杂的指针声明更加简洁
一些复杂的指针声明,如:函数指针、数组指针、指针数组的声明,往往很复杂,可读性差
  1. typedef int *(*func_ptr_t)(int *p, int len, char name[]);
  2. func_ptr_t array[10];


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

本版积分规则

2064

主题

14492

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部