跨平台的 C++ 代码移植要点

本文介绍了跨平台C++代码移植的要点,包括分层设计以隔离平台相关代码,注意平台特性如目录分隔符、换行符、大小写敏感性等,避免使用编译器特有的特性,处理数据类型差异,理解调用外部库的不同,掌握动态库加载路径顺序的差异,并关注动态库入口函数的区别。
摘要由CSDN通过智能技术生成

--------------------------------------------------------------------------------
标题: 跨平台的 C++ 代码移植要点
作者: 叶飞虎
日期: 2010.09.06
--------------------------------------------------------------------------------

1. 分层设计
   隔离平台相关的代码, 就像可测试性一样, 可移植性也要从设计抓起。一般来说, 最上
   层和最下层都不具有良好的可移植性:
      1). 最上层是 GUI, 大多数 GUI 都不是跨平台的, 如: Win32 SDK 和 MFC
      2). 最下层是操作系统 API, 大部分操作系统 API 都是专用的

   如果这两层的代码散布在整个软件中, 那么这个软件的可植性将非常的差, 这是不言自
   明的。那么如何避免这种情况呢? 当然是分层设计了:
      1). 最底层采用 Adapter 模式, 把不同操作系统的 API 封装成一套统一的接口(如:
          KYLib 库), 至于封装成类还是封装成函数, 要看实际情况而定。如果在开发第
          一个平台时就采用 KYLib, 可以大大减少移植的工作量。

      2). 最上层采用分离界面表现与内部逻辑代码的模式, 把大部分代码放到内部逻辑里
          面, 界面仅仅是显示和接收输入, 即使要换一套 GUI, 工作量也不大。这同时也
          是提高可测试性的手段之一, 当然还有其它一些附加好处。所以即使你采用 QT
          或者 GTK+ 等跨平台的 GUI 设计软件界面, 分离界面表现与内部逻辑也是非常
          有用的。


2. 注意平台的特性
   a. 目录分隔符: 在Windows下用 '\\', 在Linux下用 '/'。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KYLib 2.1.1.0 (build 2010.01.30) KYLib 使用简单, 只要头文件中包含有: #include "KYLib.h" 就可以了。 KYLib 有针对VC6, VS2003, VS2005, VS2008等版本库, 而且基于KYLib开发的代码可以在VC不同版本中平稳移植, 以及可以平稳移植Linux中。 从 KYLib 2.1.1.0 版本开始, 在类中添加详细的注释, 可以很轻松的使用类及相关属性方法等等。 KYLib 提供的相关函数与Delphi中基本相同, 提供丰富的函数和类, 如: a. 字符串类KYString与Delphi中的String结构基本相似, 而且多线程安全稳定 b. TDateTime类型与Delphi中的TDateTime类型完全相同, 而且支持相关的函数 c. 字符串操作相关函数 {Copy, Trim, UpperCase, SetLength, Format, SameText, CompareStr等等} d. 日期时间相关函数 {Date, Time, Now, FormatDateTime等等} e. 文件操作相关函数 {FileOpen, FileCreate, FileClose, FileExists, CreateDir, DeleteFile, ExtractFilePath等等} f. 编码相关函数 {Unicode/UTF8编码, CRC32编码, Base64编码, MD5编码, 加密/解密编码} g. 线程相关类 {TThread, TKYThread, TKYAsynchRun, TKYRunThread, TKYTimer等等} h. 文件类 {TFile, TKYDebugFile, TKYLogObj等等} i. ini文件类 {TIniFile, TMemIniFile等等} j. 列表类 {TKYList, TKYStringList, TKYCustomList, TKYNameStrList, TKYCode2Name等等} k. 链表类 {TKYQueue, TKYStack, TKYQueueEx, TKYStackEx等等} l. 句柄类 {TKYHandles, TKYMemHandles等等} m. 二叉树类 {TKYAVLTree, TKYAVLTreeEx, TKYLevelTree} n. 共享队列类 {TKYQueueMap, TKYQueueFile} o. 内存管理类 {TKYFormatBlock, TKYMemBlock等等} p. 线程同步类 {TKYCritSect, TKYLockRW, TKYEvent, TKYMutex, TKYSemaphore} q. 可变类型类 {TKYVarType, TKYField, TKYFieldDef等等} r. 接收缓冲区类 {TKYRecvBuffer, TKYRecvCache} s. Socket相关类 {TKYBaseSocket, TKYSockRecvThread, TKYTCPClient, TKYTCPServer, TKYUDPClient, TKYUDPServer等等} t. 压缩/解压缩类 {TKYPackObj, TKYUnpackObj} KYLib 是专业级类库, 具有高性能和高稳定的体系结构, 不是一般共享库能比拟。 KYLib 只提供.h, .o和.a文件, 供大家参考学习和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值