第1.7章: MSVC(仅限 Windows)

English

什么是 MSVC?

MSVC(Microsoft Visual C++)是微软官方的 C 和 C++ 编译器,随 Visual Studio 一同提供。 它是 Windows 开发的默认编译器,并与 Windows SDK、 微软调试器以及 Visual Studio IDE 紧密集成。

MSVC 不是 fast_io 支持的编译器。fast_io 把每个错误都报告为赫布异常,而 cl.exe 并未实现 赫布异常(那里根本没有 -fherbceptions),因此本库所基于的错误 契约无法用它表达。你可以阅读本页来了解 MSVC 是什么,以及 Windows 二进制文件是如何产出的, 但本教程中的所有代码都是用我们的 GCC 或 LLVM 分支构建的——对于 Windows 目标, 请使用我们的 Clang 加 --config=$HOME/cfgs/x86_64-windows-msvc.cfg, 或者我们的 MinGW GCC。确切的命令见 第1.8章。

安装 Visual Studio(MSVC)

如果你在 Windows 上,可以使用微软官方的 C++ 编译器: MSVC(Microsoft Visual C++),它随 Visual Studio 提供。

我们建议安装 Visual Studio Insider 而不是稳定版通道。 Insider 版本提供最新的 MSVC 工具链、更新的头文件以及最新的 C++ 特性。

在此下载 Visual Studio Insider:

https://visualstudio.microsoft.com/insiders/

安装步骤:

安装完成后,你必须使用适用于你的架构的 Visual C++ 开发者命令提示符:

这些命令提示符会配置所有必需的环境变量,例如 INCLUDE、 LIB 和 PATH。 在普通命令提示符中运行 cl.exe 无法正常工作。

使用 MSVC 编译 Windows 二进制文件

进入正确的开发者命令提示符后,你可以这样编译 Windows 二进制文件:

cl /EHsc /Ox hello.cpp /std:c++latest /GL /MD

这会产出 hello.exe,并链接到 Microsoft Visual C++ 运行时。

你并不需要 MSVC 来创建 MSVC 兼容的 Windows 二进制文件

虽然 MSVC 是微软的官方编译器,但你并不需要 MSVC 来创建 使用 MSVC 运行时的 Windows 二进制文件。

在 第1.4章 和 第1.5章 中,我们展示了如何使用 Clang 搭配 windows-msvc-sysroot 包。 这个 sysroot 包含了所有 MSVC 头文件与库,由本教程作者提取并打包。

借助这个 sysroot,你可以在以下平台上构建 MSVC 兼容的 Windows 二进制文件:

这意味着你完全不需要安装 Visual Studio 或 MSVC。

许多 C++ 开发者认为 MSVC 的编译器前端与诊断信息不如 Clang 和 GCC。 你当然可以试试 MSVC,但本教程强烈建议改用 Clang 或 GCC。

本教程为何使用 Clang

在本教程中,我们主要使用 Clang,因为:

如果你还没读过 第1.4章 和 第1.5章,建议回顾一下,以理解 Clang 交叉编译是如何工作的。