在 Unity 之外,C# 很少用作游戏编程语言。 C++ 大量用于 Unreal、Cryengine、Lumberyard 和几乎所有专有的游戏工作室引擎。本系列适用于了解 C# 并希望拓宽技能的 Unity 游戏程序员,以便他们可以有效地为其他引擎编写代码,甚至为 Unity 编写 C++ 脚本。今天我们将首先介绍 C++ 的历史、标准库、工具、社区和文档。继续阅读以开始!

历史

  C++ 的前身是 C,它于 1972 年首次亮相。它仍然是使用最多的语言,C++ 排名第四,C# 排名第五。

  C++ 于 1979 年以“C with Classes”的名称开始。C++ 这个名称是在 1982 年晚些时候出现的。最初的 C++ 编译器 Cfront 输出 C 源文件,然后将其编译为机器代码。该编译器早已被替换,现代编译器都将 C++ 直接编译为机器代码。

  1989 年添加了“C++ 2.0”对该语言的主要补充,然后该语言在 1998 年被 ISO 标准化。通俗地说,这被称为 C++98,并开始了添加年份来命名该语言版本的约定.它还通过一个委员会和各种工作组正式确定了设计和标准化语言的过程。

  2003 年语言的微小变化导致了 C++03,但“现代 C++”时代始于 C++11 语言的巨大变化。这也加快了标准化进程,从之前的八年差距缩短到仅仅三年。这意味着我们在 C++14 中得到了微小的变化,在 C++17 中发生了相对较大的变化,而在 C++20 中即将发布巨大的变化。 Unreal、Cryengine 和 Lumberyard 等游戏引擎都支持最新版本 C++17,并且在标准化后可能会支持 C++20。

  在这一点上,该语言与 C 几乎没有相似之处。许多 C 代码仍将编译为 C++,但惯用的 C++ 只是表面上与 C 相似。

标准库

  每个 C++ 版本都包含所谓的“标准库”。这通常被称为“STL”,意思是“标准模板库”,因为它大量使用了称为模板的 C++ 语言特性。这个库也与语言本身一起被 ISO 标准化。

  标准库类似于 .NET 的框架类库或 CoreFX。架构方法是让 C++ 语言具有强大的低级语言功能,因此可以在库中实现更多功能,而不是直接包含在语言中。例如,该语言不包含字符串类。相反,标准库提供了一个使用低级语言功能有效实现的字符串类。

  下表显示了标准库的主要部分及其在 .NET 中的松散等效项:

unity 支不支持麒麟系统_c++


  一些游戏编程环境不使用标准库,或者至少尽量减少它的使用。 EA 已经实现了他们自己的版本,称为 EASTL。 Unreal 有许多内置的类似类型(FString 与 string)和函数(MakeUnique 与 make_unique)。这些库受益于标准库所基于的相同低级语言功能,而是使用它们来有效地重新实现许多其他语言中的语言功能。

工具

  主要工具当然是编译器。现在有很多不错的选择,但这里有一些最受欢迎的:

unity 支不支持麒麟系统_低级语言_02


  还有许多 IDE 具有通常的功能组合:文本编辑器、编译器执行、交互式调试器等。以下是一些流行的选项:

unity 支不支持麒麟系统_编译器_03


  许多静态分析器(称为“linter”)和动态分析器都可用。 Clang sanitizers 套件是免费的、开源的,并且具有 Unreal 支持。 Coverity SAST 等商业工具也可用。 Clang 格式和许多 IDE 可以强制执行样式指南并自动重新格式化代码。

文档

  C++ 标准可供购买,但几乎没有 C++ 开发人员真正购买它。草案版本是免费提供的,几乎完全相同,但它非常长且技术性很强,因此它也只是最后的参考。大多数开发人员不是阅读标准本身,而是阅读 cppreference.com 等参考站点,就像他们阅读 Microsoft Docs(又名 MSDN)以获取 C# 参考一样。

  存在许多 C++ 指南文档。 C++ 核心指南、Google C++ 风格指南和引擎特定标准都是常用的。特别是 C++ 核心指南有一个配套的指南支持库 (GSL) 来执行和促进这些指南。

社区

  开发人员社区聚集在许多地方。这里有几个:

  • C++ 语言 Slack 拥有 16,000 名成员
  • /r/cpp subreddit 有 136,000 名成员
  • /r/Cplusplus subreddit 有 21,000 名成员
  • CppCon 每年举行一次,发表数百场演讲
  • 特定于Unreal引擎的论坛通常非常活跃
  • 许多 C++ GitHub 存储库拥有超过 10,000 颗星和活跃的问题部分

接下来

有了这个介绍,下周我们将深入研究语言本身并开始学习如何用 C++ 编程!