给一个变量起别名很简单就一个关键字 typedef
typedef unsigned int u32;
//声明一个变量没有任何问题
u32 a = 0 ;
那么为什么要这么做?
首先最直观的 u32 比 unsigned int 短多了 哈哈,能省不少事呢,而且一看就知道它是32位的,很直观。
第二个原因就比较实际了,修改代码方便。
其实最常用的是放在嵌入式编程中的变量定义,例如我的代码写好了,为了节省空间,里头的变量最大是 char 型的,现在需求改了,要处理的数据有的大于255的,就要把 char 型变量改成 int,但是我要是一个一个改就太麻烦了,用编译器的文本替换功能也挺烦的,因为我的代码可能分布在多个文件里。
所以在一开始就给变量起个别名,例如
typedef unsigned char item;
以后声明变量都用 item ,然后代码写完了,需求改了,我直接改一句话
typedef unsigned int item;
然后就行了,其他的地方都不用改,除非牵扯到了位操作,节省了大量的时间。
再说说另一个基本每个C语言学习者都用过的给变量起别名的例子,定义一个结构体:
struct MyStruct
{
int a;
int b;
};
typedef struct mystruct
{
int a;
int b;
}MSD;
用到第一个结构体时我这么写
struct MyStruct ad;
但是好麻烦啊,为了声明这个变量需要写两个单词,为了 偷懒 提高效率,我用了第二个结构体的声明
MSD app;
这就简单多了,效果是一样的。
我所知道的给变量起别名的理由就是这些,欢迎补充讨论。