原因
这是一组编写ISO标准C++的准则。
注意
有些环境使用拓展是必需的,例如访问系统资源。在这种场景下,定位必要拓展并且按照非核心准则控制他们的使用。可能的话,构建接口将这些拓展封装,以便在不支持这些拓展的系统上不编译或者关闭掉。
拓展通常没有严格定义语义。甚至因为没有严格的标准定义,通用的拓展在不同的编译环境下可能有轻微的不同行为和边界条件处理。
注意
使用有效的ISO C++并不能保证可移植性(更别说准确性)。避免依赖于未定义的行为(例如未定义的求值顺序)并且注意构造时定义语义执行(例如sizeof(int)
)。
注意
在某些环境中,需要限制标准 C++ 语言或库功能的使用,例如,遵守飞机控制软件标准要求而禁止动态内存分配。在这种场景下,应当根据特殊环境来控制准则启用与否。
补充
使用带有一系列不接受扩展选项的最新 C++ 编译器(当前为 C++17、C++14 或 C++11)。