请教,用TypeDef的好处
最近在看NXP的库程序,里面用了大量的TypeDef,看起来不太适应。C本身就有很多关键字,对我来说平时也够用,当使用TypeDef时又引进了
一些不熟悉的“关键字”,阅读起来很累,写起来经常编译通不过。
问题:
在例举的1中,用TypeDef的好处?
在例举的2,3,4中,用文字描述如何表达?
谢谢
1.
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
2.#define LPC_UART0 ((LPC_UART0_TypeDef *) LPC_UART0_BASE )
3.
typedef struct
{
union {
__Iuint8_tRBR;
__Ouint8_tTHR;
__IO uint8_tDLL;
uint32_t RESERVED0;
};
....................
.....................
uint8_tRESERVED6;
__IO uint32_t FIFOLVL;
} LPC_UART0_TypeDef;
4.(LPC_UART_TypeDef *)LPC_UART0 typedef unsigned char uint8_t;写起来不方便多了?也容易一看就知道是8位的 struct不用typedef ,那写的时候也很麻烦 struct XXXXvar; 不同的编译器的 unsigned short 的长度不一定都是16位,使用typedef后使得移植代码很方便,更换编译器后,只需要测试一遍各种类型的长度并修改typedef定义即可。 比较严格的数据类型定义都是用这个,相对于#define可以避免很多意外的问题 tcm123 发表于 2015-8-18 11:31
typedef unsigned char uint8_t;写起来不方便多了?也容易一看就知道是8位的 struct不用typedef ,那 ...
uint8_t; 那个后缀_t估计是什么意思? popo_new 发表于 2015-8-18 12:24
uint8_t; 那个后缀_t估计是什么意思?
意思就是typedef. popo_new 发表于 2015-8-18 12:24
uint8_t; 那个后缀_t估计是什么意思?
表示这是个定义的数据类型,LINUX的源码都是这样写的,所以估计很多都是受此影响 define是直接替换,编译器不会检查的。
页:
[1]