第2章 理想与现实:C++程序的边界

—— 然则未必尽然

在 C++ 编程世界中,标准合规性通常被视为一项至关重要的原则。C++ 标准的最新版本是编写高质量、可维护和高效代码的权威指南。这套标准由 C++ 委员会与国际标准化组织(ISO)精心制定,并定期更新,旨在为开发者提供一套统一的语言规范、库接口,以及最佳实践,从而保障代码的正确性、可移植性和跨平台互操作性。

然而,在实际的软件开发实践中,现实往往比这一理想图景更加复杂和微妙。

在本章中,我们将深入探讨开发者在日常工作中面临的诸多挑战:由于各种现实限制,无法始终遵循官方标准。这些限制可能来自多个方面,例如:使用老旧的编译器、维护遗留系统,或项目本身强制要求使用非标准扩展等。在这种情况下,开发者不得不在“理想中的标准”与“现实中的需求”之间做出权衡与取舍。

更复杂的情况出现在我们不得不依赖某些基于 C++ 并对其进行了扩展的框架时。这些框架通常构建在标准 C++ 的基础之上,引入了高度定制化的功能以满足特定领域的需要,但它们所提供的语法、语义或接口往往与官方标准毫无关联。这引发了一个值得深思的问题:我们是否应该使用这些框架?正如我们将看到的那样,这个问题并没有一个简单的“是”或“否”的答案。

在本章中,我们将围绕以下几个核心主题展开讨论:

  • 各大编译器、框架和开发环境对 C++ 标准的支持程度及其差异
  • 为何并非所有开发者都能学习、使用或编写完全符合标准的 C++ 代码
  • 编译器扩展如何逐渐偏离标准,以及这种偏离所带来的影响与风险

通过这些问题的分析,我们将更全面地理解 C++ 生态中标准与现实之间的张力,并思考在面对约束时,如何做出合理的技术决策。