一直比较困惑跨平台以及跨32bit/64bit边界的编程问题,主要是基本数据类型的sizeof大小问题。

比较确定的是(unsigned) char/(unsigned) short基本都是1byte/2byte。虽然int、long都是内置类型,但归根结底还是得看编译器的实现:32bit下一般都是4byte,64bit下就可能有多种情况了(44、48、88等)。但无论怎样编译器都知道它们的确切大小,有问题还是求助编译器吧。

32bit/64bit最大的区别就是指针大小,肯定是4byte和8byte了,因此Windows SDK的头文件通过是否定义了_WIN64宏来确定INT_PTR等自定义PTR类型的大小(_int64 or int)。

如何跨平台,当然是宏和typedef了。typedef时加上类型名称及位数,这样清晰明了,如typedef unsigned char uint8等。至于typedef unsigned int是uint32还是uint64估计还得看具体的环境了。

附上一篇参考资料:http://blog.csdn.net/tangl_99/article/details/1963762

跨平台C/C++数据类型定义