20 December 2021

C++ 核心指南目录

P.2 Write in ISO Standard C++

这条指南是说尽量按照ISO C++国际标准写代码。

注意事项:

  • 避免使用编译器特有的扩展功能。不同编译器针对不同扩展功能会有差别,就无法做到兼容,而且扩展功能如果设计不好、测试不全面,没有考虑一些边界情况,就容易出错。如果使用这些编译器特定扩展的功能无法避免,可以在扩展功能之外封装一层接口,把不兼容和不标准的代码单独隔离开。
  • 避免使用某些行为未定义的功能,比如代码执行顺序。不然就无法在不同平台和不同编译器之间移植。
  • 避免使用某些依赖于底层系统的实现的功能,比如sizeof(int),32 位和 64 位系统的返回值会不一样。
  • 在一些特定的应用领域,我们会限制C++的某些功能,比如航空控制软件的标准会限制使用动态内存分配功能。因为这些系统对运行时的可靠稳定有极高的要求。因此,针对不同的行业应用要求,需要设定不同的规则,限定这些应用领域能使用哪些标准C++的功能。
  • 使用最新的C++编译器(目前最新的是C++20,或者支持到C++17也可以了)
  • 对编译器的编译选项进行限定,关闭某些非标准的扩展功能。