popo_new 发表于 2015-8-18 11:17:26

请教,用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

tcm123 发表于 2015-8-18 11:31:00

typedef unsigned   char uint8_t;写起来不方便多了?也容易一看就知道是8位的   struct不用typedef ,那写的时候也很麻烦 struct XXXXvar;

y_square 发表于 2015-8-18 11:39:45

不同的编译器的 unsigned short 的长度不一定都是16位,使用typedef后使得移植代码很方便,更换编译器后,只需要测试一遍各种类型的长度并修改typedef定义即可。

ggchao 发表于 2015-8-18 11:40:26

比较严格的数据类型定义都是用这个,相对于#define可以避免很多意外的问题

popo_new 发表于 2015-8-18 12:24:47

tcm123 发表于 2015-8-18 11:31
typedef unsigned   char uint8_t;写起来不方便多了?也容易一看就知道是8位的   struct不用typedef ,那 ...

uint8_t; 那个后缀_t估计是什么意思?

dr2001 发表于 2015-8-18 12:28:36

popo_new 发表于 2015-8-18 12:24
uint8_t; 那个后缀_t估计是什么意思?

意思就是typedef.

tcm123 发表于 2015-8-18 13:13:46

popo_new 发表于 2015-8-18 12:24
uint8_t; 那个后缀_t估计是什么意思?

表示这是个定义的数据类型,LINUX的源码都是这样写的,所以估计很多都是受此影响

dhbighead 发表于 2015-8-18 13:30:02

define是直接替换,编译器不会检查的。
页: [1]
查看完整版本: 请教,用TypeDef的好处