C++跨平台开发 -- 影响跨平台的因素有哪些 - graybull's Blog

C++跨平台开发 -- 影响跨平台的因素有哪些

graybull posted @ 2013年3月05日 17:51 in C/C++ with tags c++ development cross-platform , 2853 阅读

跨平台是在应用程序开发当中时常遇到而又内涵丰富的话题。有幸拜读Syd Logan的《Cross-Platform Development in C++》,这里将随手写写读书心得和总结。

子话题 -- 影响跨平台的因素有哪些

  • 语言 -language
  • 编译器 - compiler
  • 二进制数据 - binary data
  • 标准库 - standard library
  • 操作系统接口 - operation system interface
  • 用户接口 - user interface
  • 生成系统 - build system
  • 配置管理 - configuration management

语言

众所周知,Java是跨平台语言。但这里我们讨论C++。C++源于C,它们也均被认为是可移植性良好的语言,特别是遵循ANSI等一些标准化的时候。

避免使用编译器开发商提供的语言扩展,是消除C/C++可移植性问题的重要步骤。

编译器

比较出名的C/C++编译器有常见于Windows平台的Microsoft Visual 6.0,Visual 7.0 .NET,可用于UNIX/Linux等平台的GNU‘s GCC开源编译器。

C/C++把很多语言特性的实现细节交到了编译器制造商的手上。这给代码引入了不可移植性。这些细节有:

  • short, int, long内建类型的字节长度

C标准规定,short必须至少是16位;int必须至少和short一样大;long必须至少和int一样大。但都没确定到底是多大!

  •  位操作符

向右移位,变量的最左位可以填符号位,也可以填零。

  • 有符号和无符号char类型

一个char类型是有符号的还是无符号的,这由编译器来决定。

只在同类型之间进行赋值和比较;使用C++风格的类型转换;遵循函数原型;修复每一个编译器产生的警告。
 

二进制数据

多位整数(如int)的存储顺序不一样(大端和小端,高低字节位)。在二进制数据中,struct在内存中存放方式跟编译器和目标架构有关。

所以,尽量使用text格式代替二进制数据。但这方法并不总是可行的。

标准库

C和C++都有标准库,如Standard Template Library(STL)。为了填补STL的空白,开源社区不断开发并维护Boost项目。

为了提高可移植性,代码应尽量使用标准库

操作系统接口

创建线程、进程间通信、底层IO、设备驱动和网络IO等等,均是与操作系统相关的。使用这些系统调用的代码片段是不可直接移植的。

用户接口

用户接口或许是现代桌面平台中最不具有可移植性的方面了。常见的图形用户界面有,Windows的MFC、.NET,Mac OS X的Cocoa,以及Linux的Gtk+(GNOME)和Qt(KDE)。

生成系统 - build system

编译和链接代码,可以使用简单的命令行脚本实现,也可以使用automake或者Imake等复杂的系统。

一个标准的可共享的生成系统,可以使得开发人员容易的在不同机器间移植代码。

Imake支持代码的移植性;automake和autoconf提供一套处理跨平台Makefile生成的策略。

集成开发环境(IDE),比如Visual Studio,束缚了可移植的生成系统的开发,也束缚了可移植代码的开发。

配置管理

配置管理本身和跨平台开发没有必然联系。配置管理有助于对代码进行管理,提高代码开发的效率。

流行的配置管理工具有:CVS,Subversion,Git等等。

 

参考文献

《Cross-Platform Development in C++》Syd Logan

Avatar_small
Mike 说:
2013年3月11日 03:32

AutoTools 對初學者來說太難了,建議有毅力的人學習。。。

Avatar_small
Assignment Help 说:
2018年6月25日 20:37

Hi, I am a marketing manager at All Assignment Help; it is an online platform which offer Assignment help for all university students. We have a team of professional writers & provide best solution according to given guideline.

Avatar_small
Allassignmenthelp.co 说:
2018年9月16日 23:41

Hello guys do you know that going through a review of websites will give you much insight about it which you can’t know by simply visiting it, Here is the Allassignmenthelp.com Reviews that reviews the website and provides you the best website .

Avatar_small
muvizu full version 说:
2019年10月01日 01:17

I read this article. I think You put a lot of effort to create this article. I appreciate your work.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee