1- 注意文件名的大小写, 这个在移植到 LINUX 这种文件系统区分名字大小写的系统上尤其重要.
2- 同样的,注意文件名大小写的同时,也应该注意避免在区分大小写的系统上创建大小写不同,但名字相同的代码文件.
3- 保证每个代码文件(CPP,H)的结尾都有单独的没有任何内容的一行, 这在CC/GCC/G++编译器下能减少很多警告.
4- 同1 和2 项所说, #include 包含头文件的时候一定要注意文件名的大小写, VC++总是把大小写搞乱, 不得不猜想微软是不是想要阻挠跨平台的软件开发...
5- 接第4项, 头文件的路径分隔推荐使用 " / ", 而不是WINDOWS下常用的 " \ ", 前者基本可以在所有系统上使用, 后者似乎是WINDOWS独家支持的.
6- 尽量使用标准C++的原子数据类型, 避免使用被重新定义过的类型. 或者自己重新重定义一套.
7- 避免使用编译器相关的一些特性, 比如VC++的_descspec() 这个扩展出来的各种语言特性. 尽量所有代码都按照C++标准来编写.
8- 注意不同平台编译器的非C++标准的地方, 比如返回对象实例的生存空间.
9- 尽量把操作系统相关的东西都封装成统一的调用接口, 这样在你移植代码的时候,可以做到重新编译即可运行.
10- 调试环境最好选择WINDOWS平台, 因为那里的调试是最友好, 特别是WINDOWS的结构化异常非常的好用, 可以简单的DUMP出异常产生处的CALLSTACK和变量值...我说的可是发行版本.
11- 尽量不要使用内嵌汇编, 先不说GCC的内嵌汇编多么的难写, 光是不同平台CPU的指令集的差别就足以让人头疼. 不过说起来, 似乎GCC的内嵌汇编的写法是可以跨CPU硬件平台的.
12- 如果你的程序要在多平台下进行数据交换或者是网络通信, 请一定要注意LITTLE_ENDIAN和BIG_ENDIAN的区别, 仔细处理这个问题, 往往会解决让你挠头不止也无法解决的问题.
<未完待续>