Linux Windows下 C_C++开发的差异 平台差异简介: Windows 和 Unix 是当前两大主流操作系统平台,基于 C/C++ 的开发人员经常会面临这两个平台之间的移植的问题。 Unix 作为一个开发式的系统,其下有出现了很多分支,包括 Sun 的 Solaris、IBM 的 AIX、HP Unix、SCO Unix、Free BSD、苹果的 MAC OS 以及开源的 Linux 等。对于这些 Unix 的分支操作系统,其实现又有很大的差别,因此开发人员又要针对这些不同的系统进行移植。 语言特性的差异: 语言特性的差异,指的是不同操作系统平台中,实现 C++/C 时的一些细微的差异,忽略这些差异可能会带来一些特别隐蔽的错误。而且可能是致命的错误。所以,了解语言特性的差异,对于在 Unix 移植来说非常重要。如果考虑系统多多个平台支持,就必须了解在不同平台下语言特性的差异,从开发一开始就把这些因素考虑进去,这样才能最低限度的降低移植的过程中工作量。 字节顺序的差异: 字节顺序指的是整型变量在内存中的存储方式。在计算机中,数据都是以二进制方式存储的,包括在内存和硬盘中。而计算机又以 8 位二进制作为一个存储单元。在 32 位系统中,一个整型的存储需要四个存储单元。也就是说要把一个 32 位的整数分割成四段分别进行存储,而每一段的存储位置就是字节顺序的差异。 在 Windows 中,整型变量的存储顺序是低位在前高位在后的顺序,而在 Unix 中,整型变量的存储顺序是高位在前低位在后的顺序。这两种存储顺序的差异会引起一些问题,如网络通信和文件存储时的数据传输问题。 解决这个问题的方法就是交互的双方采用一种相同的数据编码标准,就是数据在传输和存储的时候采用什么方法进行编码,具体的做法有一下几种: 1. 数字转换成字符传进行交互 2. 协商一个同意的字节顺序,根据自己平台的字节顺序还原数据 3. 采用其他标准的编码方式,如 ASN1 编码 变量的作用域差异: 在不同的系统下,由于编译器的不同,对变量作用域的实现机制也有所不同,这里以 Windows 下的 VC 和 Solaris 下的 CC 这两个编译器为例做一个简单的比较说明。 在 C++ 的开发过程中,我们经常会有这样的用法: for(int i=0;i<num;i++) { ... } 在 VC 编译器下,这个循环变量 i 的作用域是整个循环体,而在 CC 编译器下,这个循环变量 i 的作用域只是循环体内部。这两种实现机制的差异可能会引起一些问题,如变量的作用域问题和内存泄露问题。 了解 Linux 和 Windows 下 C_C++ 的开发差异对开发人员来说非常重要。只有了解这些差异,才能更好地进行移植和开发工作。
剩余14页未读,继续阅读
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (18956428)STM32F103C8T6 小系统原理图 PCB
- (175828796)python全国疫情数据爬虫可视化分析系统(django)源码数据库演示.zip
- 记账本项目市场需求文档(MRD)
- (31687028)PID控制器matlab仿真.zip
- 基于SpringBoot的“在线答疑系统”的设计与实现(源码+数据库+文档+PPT).zip
- (11828838)进销存系统源码
- 记账本项目三大模块原型图
- fed54987-3a28-4a7a-9c89-52d3ac6bc048.vsidx
- (177367038)QT实现教务管理系统.zip
- (178041422)基于springboot网上书城系统.zip