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