当前位置: 代码迷 >> WinCE >> uint8_t\uint16_t\uint32_t跟unsigned char\int\long int的区别
  详细解决方案

uint8_t\uint16_t\uint32_t跟unsigned char\int\long int的区别

热度:100   发布时间:2016-04-28 12:59:43.0
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;
 
  相关解决方案