是什么阻碍了我们跨平台
(4) 第三方库 这个上面已经提到,其实现在存在很多很好的跨平台的第三方库,例如boost库,OpenGL库,rtp应用方面有jrtplib库,网络编程方面有ACE库,等等.对于特定的应用,我相信,你总可以找到一些对应的跨平台的库来满足你的需求. (5) 编程语句 同样,我们需要使用一些跨平台的语句来代替一些非跨平台的语句.例如 #prgram once,我们可以使用下面这样的语句来替换. #ifndef 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |