快速业务通道

是什么阻碍了我们跨平台

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-22

(4) 第三方库

这个上面已经提到,其实现在存在很多很好的跨平台的第三方库,例如boost库,OpenGL库,rtp应用方面有jrtplib库,网络编程方面有ACE库,等等.对于特定的应用,我相信,你总可以找到一些对应的跨平台的库来满足你的需求.

(5) 编程语句

同样,我们需要使用一些跨平台的语句来代替一些非跨平台的语句.例如 #prgram once,我们可以使用下面这样的语句来替换.

#ifndef XXXX_H_
#define XXXX_H_

……

#endif //XXXX_H_

当然,对于实在没有什么替换的语句,我们可以使用另外一种方案,那就是条件编译,形式如下:

#if defined WINDOWS

Sleep(1000)

#elif LINUX

sleep(1000*1000)

#else

……

#endif

说到这里,其实,跨平台的基本概念和基本知识我想大家也应该都清楚了.但其实真正想写好跨平台的程序,其实还是任重道远的,有很多其他的细节因素需要在实战中慢慢积累,下面我就举几个常见的问题作为本文的结尾吧!

1. 文件与目录的大小写以及路径分隔符的差别问题

windows下不区分大小写,路径分隔符一般使用"";linux下区分大小写,路径分隔符使用"/".在程序中操作文件和目录的路径时这一点要注意.

2. linux下和windows下文件扩展名不同

例如,linux下没有exe和dll程序,dll在linux下对应的是.o文件,在程序中不要判定系统中是否存在某某exe程序.

3. 在每一个.h文件后面都多加上一行,否则在linux下编译时会有警告

4. C 中基本类型的大小(占用的字节数)会随着CPU字长的变化而变化.,假如你要表示一个int占用的字节数,千万不要直接写“4”,而应该使用sizeof()函数

5. 内存对齐

出于CPU处理上的性能考虑,结构体中的数据不是紧挨着的,而是要空开一些间隔.这样的话,结构体中每个数据的地址正好都是某个字长的整数倍.C 标准中没有定义内存对齐的细节,因此,你的代码也不能依赖对齐的细节.凡是计算结构体大小的地方,都应该老老实实写上sizeof().

……

好了,就说这么多了,希望我在跨平台软件编程方面的心得能够对你有所帮助,有任何其他疑问,欢迎来信交流:lujun_hust@126.com

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号