专栏中心

EEPW首页 > 专栏 > C语言编程需要注意的64位和32机器的区别

C语言编程需要注意的64位和32机器的区别

发布人:电子禅石 时间:2020-03-20 来源:工程师 发布文章
C语言编程需要注意的64位和32机器的区别  

一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:

16位平台

char         1个字节8位

short        2个字节16位

int            2个字节16位

long         4个字节32位

指针         2个字节

32位平台

char         1个字节8位

short        2个字节16位

int            4个字节32位

long         4个字节

long long 8个字节

指针         4个字节

64位平台

char         1个字节

short        2个字节

int            4个字节

long         8个字节(区别)

long long 8个字节

指针        8个字节(区别)

二、编程注意事项

为了保证平台的通用性,程序中尽量不要使用long数据库型。可以使用固定大小的数据类型宏定义,这些宏定义需要引用stdint.h头文件:

typedef signed char       int8_t

typedef short int             int16_t;

typedef int                      int32_t;

# if __WORDSIZE == 64
typedef long int              int64_t;
# else
__extension__
typedef long long int      int64_t;

#endif

三、使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台字长,比如64位机器它的长度就是8字节,32位机器它的长度是4字节,使用它可以安全地进行整数与指针的转换运算,也就是说当需要将指针作为整数运算时,将它转换成intptr_t进行运算才是安全的。intptr_t需要引用stddef.h头文件,它的定义如下:

#if __WORDSIZE == 64
typedef long int                intptr_t;
#else
typedef int                        intptr_t;
#endif
编程中要尽量使用sizeof来计算数据类型的大小

以上类型定义都有相应的无符号类型。

四、使用ssize_t和size_t

它们分别是unsigned和signed size of computer word size。它们也是表示计算机的字长,在32位机器上是int型,在64位机器上long型。使用它们对于增加平台的通用性有很大好处,从某种意义上来说它们等同于intptr_t和uintptr_t。使用它们也需要引用stddef.h头文件。

五、socket的accept函数在有些操作系统上使用size_t是不正确的,因为accept接收的int*类型,而size_t的长度可能会超过int*的长度限制,导致错误。后来BSD使用sock_t来替代它。



http://blog.csdn.net/kongdefei5000/article/details/38866985


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

2026:物理智能元年

模拟技术 2026-02-25

贸泽电子亮相SPS广州,一站式工业自动化平台加速AI+制造落地

MCS-51单片机实用子程序库

水下无人机如何在水下通信

机器人 2026-02-25

MCS-51系列和80C51系列单片机是否相同

MCS-51单片机输入输出口

资源下载 2007-02-16

Required Technologies for Transmission of 4 x 25 Gb/s Over a Copper Backplane (下)

视频 2010-03-25

革新科技的高速率连接方案(下)

视频 2010-03-25

ASML发布2025年度报告

EDA/PCB 2026-02-25

“小显存,大模型”国数集联解读如何降低AI普惠门槛

氧化铟芯片为何备受关注?

MCS-51单片机子程序使用说明及程序注释

高温聚合物在连接器上的应用(上)

MCS-51单片机主要应用特性

资源下载 2007-02-16

革新科技的高速率连接方案(上)

视频 2010-03-25

【IEEE好文分享】运动传感器测量结果差异巨大,新标准正在缩小差距

定制化AI解决方案,决胜智造未来

村田采用电容器核心薄膜技术,开发废气循环VOC清除系统

Required Technologies for Transmission of 4 x 25 Gb/s Over a Copper Backplane (上)

视频 2010-03-25

深圳村田科技有限公司20周年庆典暨新年会盛大举行

更多 培训课堂
更多 焦点
更多 视频

技术专区