linux 32位与64位系统下数据类型长度的区别

本文介绍了一个跨32位和64位系统的C程序设计方案。该方案通过定义一套数据传输协议来确保不同架构间的客户端与服务端能够进行一致的数据交换。为解决内存对齐和数据紧凑性问题,使用了#pragmapack指令,并详细对比了centos_x32与centos_x64环境下基本数据类型的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日在centos下用c写东西,这个程序的服务端运行在64位的centos下,客户端有可能是32机,也有可能是64位的。
为了保证数据传输的一致性制定了一套协议,用struct实现。为了保证输出过程中,数据的完整性,特别针对系统的不同对struct里变量的类型进行了优化。为了保证内存对齐方式的一致和数据存储空间的紧凑,都用 #pragma pack(4) 指定了对齐大小。

一下是在centos_x32和centos_x64下对应的类型长度:

/*******size of types on centos_x32*****************/
size of char:1
size of int:4
size of long :4
size of float :4
size of long long:8
size of double:8
size of long double:12
size of char * :4

/*******size of types on centos_x64*****************/
size of char:1
size of int:4
size of long :8
size of float :4
size of long long:8
size of double:8
size of long double:16
size of char * :8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值