发一篇科普短文吧,大神可以跳过。
在嵌入式开发中的C语言代码中,经常可以看到类似uint8_t、uint16_t、uint32_t、uint64_t这种数据类型,在教材中却从来没见过。实际上这些数据类型都是某种数据类型的别名。
比如,在定义函数时用到了uint8_t。
右键“uint8_t”,单击“Go To Definition Of 'uint8_t'”,可以在在工程文件stdint.h中看到下图代码。
从上面代码可以知道,在这里uint8_t被定义为unsigned char的别名,也就是说uint_8t代指unsigned char(无符号字符型)。
为什么要这样做呢?直观上来看是可以少打很多字母。实际上,这也是一种良好的编程习惯,让你的代码优美如诗。
如下代码是类似的别名,其中signed就是有符号的意思:
/* exact-width signed integer types */
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __INT64 int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __INT64 uint64_t;