日期:2014-05-16  浏览次数:20757 次

关于移植----基本数据类型问题
unix系统中如何保证 基本数据类型的可移植性?

uint8_t, uint16_t, 和 uint32_t 一定是 8位,16位和32位的吗?
如果不是 如何用typedef保证基本数据类型的可移植性? 3Q

------解决方案--------------------
还是和系统相关的

uint8_t, uint16_t, 和 uint32_t

这些也是通过typedef定义的

比如在32位系统或者64位系统上

typedef uint8_t unsigned char;
typedef uint16_6 unsigned short int;
typefef uint32_t unsigned int;
------解决方案--------------------
如果是32位的处理器,上述三个类型能保证是8位,16位和32位的吗?
---------是的, 如果换了平台 修改 typedef 或 #define就可以了
------解决方案--------------------
如果是可以跨平台onfig的话
那么不用担心的
因为会根据你选的BSP编译出

------解决方案--------------------
uint8_t, uint16_t, 和 uint32_t 一定是 8位,16位和32位的吗?
========
是. 当然是
------解决方案--------------------
你可以自己编写一个c程序,用sizeof函数取得你想知道的数据类型在系统中的位数。
------解决方案--------------------
为了保证可移植性, 最好自己定义类型别名.
移植到相应的系统上时, 只要重新定义这些自己定义的类型就可以了, 
我之前把DOS上16位的程序移植到linux32位上