在有些嵌入式例程中,我们经常能看到一些变量类型比如说u8,u16

而它的真正含义其实是unsigned char (u8),unsigned short(u16),开发人员利用这些 “别名”   减少写代码的工作量。

那么这个效果是如何实现的呢?

我们要介绍的C语言关键字是Typedef

Typedef在计算机编程语言中用来为已有的类型声明和定义简单的别名,区别于宏定义他本身是一种存储类的关键字,而不是像宏定义一样属于预编译语句。

用法也非常的简单typedef 类型名称 新类型名称 ,这样子就可以为已有的类型名称起别名使用。

用这种方式,我们就可以给我们的变量起别名,即便他的名字叫做阿猫阿狗也没有关系。

既然typedef是对已经存在的变量类型进行别名定义,那么我们之前有介绍过结构体C语言——结构体,讲过结构体可以算作我们认为定义的一种变量,因此,typedef自然可以应用到结构体之上,讲我们的结构体进行简单的取别名操作。

在我们使用回调函数的时候,通常会写如下语句,定义一个函数类型的指针,Function,其内容指向函数T1,之后可以直接调用Function来调用T1


void T1(int a)
{
  printf("%d", a);
}

int main()
{
  void(*Function)(int) = &T1;
  Function(100);
}

但是这样子的定义就会有点冗长,我们可以利用typedef来简化这种定义


typedef void(*FunctionHandler)(int);

void T1(int a)
{
  printf("%d", a);
}

int main()
{
  FunctionHandler Function;
  Function = &T1;
  Function(100);
}

我们利用typedef定义创建出我们的"变量类型"FunctionHandler,之后我们创建相关类型的变量就可以使用FunctionHandler来定义我们的变量。

嘉立创PCB

还没有评论,抢个沙发!