读书人

uint8_t\uint16_t\uint32_t跟unsigned

发布时间: 2012-07-02 17:46:22 作者: rapoo

uint8_t\uint16_t\uint32_t和unsigned char\int\long int的区别
本人刚步入嵌入式开发,看到ARM程序中,在定义数据类型时,有些用uint8_t神马的,有些用unsigned char什么的。
按说这两种类型是指同一种基本数据类型,在程序中这样用有什么特别用途吗???

[解决办法]
unsigned char 标准C语言,无需解释

uint8_t,这个不是标准C时代码编写者自己造的类型 诸如typedef unsigned char uint8_t

你可以去跟踪代码,看看那里定义的uint8_t,这个很好找。 其次去google "typedef" 肯定是你要的答案。

综上所述,C语言问题。
[解决办法]
Standard C, 是不定料型的 sizeof() 值的.

所以 sizeof(int), 在 8051 or ARM 上面的 C compiler 的值是不一的.

了更明地定以增加移植性, 所以

Paul, Chao @ Techware

[解决办法]
上一篇的不好, 更精地法是 "Standard C, 料型的 sizeof() 值是器相的"

Paul, Chao @ Techware

[解决办法]
"我看了,这个好像是ucOS系统自己typedef的,直接在ARM上移植过来的系统代码。"
只有unsigned char是标准C里面的。


ucosii里面用的是什么,我不记得了,typedef给原来的类型起来一个名字,目的是为了不同系统里便移植方便,比如8位单片机代码移植到32位ARM上面,如果按照原来的标准C很可能不适合,逐个改定义很累,而用了typedef可以实现一改全改,尤其在定义结构体类型的时候很有优势。

google "typedef".你会学到更多。


看看我这个结构体:
typedef struct
{
ascii *p_Command;
u8 v_MaxParameters;
u8 v_SupportedTypes;
u8 v_CommandId;
u8 v_CommandCategory;
t_aki_SupportedParamList a_SupportedParam[AKI_PARAM_LENGTH];
} t_aki_CommandList;

读书人网 >WinCE

热点推荐