这篇文章是我翻译自Top 10 tips for code porting c/c++的一篇小短文,以下是翻译全文,如有错误请留言或查阅原文。

代码的可移植性基本上是指使得源代码能够在不同的平台上编译,而不需要源代码进行任何修改。

在脑海里我们知道为保持移植性而编写代码对是重要的。引入代码可移植性的最好方法就是在编码阶段。时时考虑一些事情会使我们实现代码的可移植性付出较少的努力,这也是我们在这篇短文里会讨论的。

不可移植的代码引入了一些问题,如维护不同的版本,降低了可读性,降低了代码的可理解性等等。

使遗留下来的或者老的代码具有可移植性的努力,会让你感觉遗失在代码海洋里。因此,在编写代码中最好的策略是时刻考虑移植性问题,这样可以节省大量的时间和返工的努力。现在最大的问题是——“如何编写可移植的代码?”。我们的源代码应该在不同的环境,如不同的处理器,不同的操作系统,不同的版本库等情况下保持兼容性。在这篇文章中,我们将介绍在写代码过程中应该牢记脑海的一些基本技巧。

  1. 不要假设数据类型的大小是跨平台的常数,因为它可能会在不同平台上有所改变
  2. 不要使用特有的系统常数
  3. 系统的文件/文件夹路径表示在不同平台上可能会有所不同
  4. 避免使用系统的特有模块/库
  5. 总是在switch块中写default语句分支
  6. 总是为函数定义返回类型
  7. 总是为static变量指定数据类型
  8. 始终关心变量的作用域
  9. 不要在C代码中使用C + +的注释风格
  10. 注意头文件的包含深度和代码文件的大小

我尽力介绍适合初学者的关于代码移植的这10个基本技巧,虽然仍有别的一些方面需要注意,那些我们需要关心的更深层的可移植问题,如类的处理,虚函数,异常处理,编译器指令,运行时识别等。

希望你喜欢这篇短文!

移植C/C++代码的十个技巧的更多相关文章

  1. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

  2. C51汇编典型代码&一些org-mode技巧

    C51汇编典型代码&一些org-mode技巧 文档存放 具体内容可见存放的数据. 下面主要介绍关键代码. ASM 部分 1;; LCD数据发送========================= ...

  3. Redis正确使用的十个技巧

    http://www.jb51.net/article/73376.htm Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redi ...

  4. 十个技巧迅速提升JQuery性能

    本文提供即刻提升你的脚本性能的十个步骤.不用担心,这并不是什么高深的技巧.人人皆可运用!这些技巧包括: 使用最新版本 合并.最小化脚本 用for替代each 用ID替代class选择器 给选择器指定前 ...

  5. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  6. Python代码性能优化技巧

    摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...

  7. Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  8. 程序员使用Node的十个技巧

    从问世到现在将近20年,JavaScript一直缺乏其它有吸引力的编程语言,比如Python和Ruby,的很多优点:命令行界面,REPL,包管理器,以及组织良好的开源社区.感谢Node.js和npm, ...

  9. .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧

    一.前言 为什么要调试代码?通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug.ken.io觉得熟练代码调试技巧是成为合格程序员的基本要 ...

随机推荐

  1. opp小节

    本章总结 练习题 面向对象三大特性,各有什么用处,说说你的理解. 类的属性和对象的属性有什么区别? 面向过程编程与面向对象编程的区别与应用场景? 类和对象在内存中是如何保存的. 什么是绑定到对象的方法 ...

  2. Jsp+servlet+mysql搭建套路

    1.建立数据库根据需求建立相应的数据库确立数据库的字段.属性.主键等2.建立javaweb项目,搭建开发环境在开发环境的/WebRoot/WEB-INF下建立lib文件夹,存放需要使用的jar包常用的 ...

  3. LDA汇总

    1.Blei的LDA代码(C):http://www.cs.princeton.edu/~blei/lda-c/index.html2.D.Bei的主页:http://www.cs.princeton ...

  4. ISO 8895-1

    https://en.wikipedia.org/wiki/ISO/IEC_8859-1#Codepage_layout http://czyborra.com/charsets/

  5. 12) maven-compiler-plugin

    The Compiler Plugin is used to compile the sources of your project. At present the default source se ...

  6. 201709021工作日记--CAS解读

    CAS主要参考博文:classtag  http://www.jianshu.com/p/473e14d5ab2d CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术 ...

  7. hbase使用MapReduce操作1(基本增删改查)

    操作代码 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apach ...

  8. SpringMVC 示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  9. java对redis的基本操作(一)

    一.server端安装 1.下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6

  10. 【TypeScript】TypeScript 学习 2——接口

    在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScript 的时候,所有的接口都会被擦除掉,因为 JavaScript 中并没有接口这一概念. 先看看一个简单的例子: func ...