c++ - 使用纯 C++ 编译器与 Visual C++

标签 c++ visual-c++ ide compiler-construction

我四处寻找这些问题的答案,但运气不佳。所以,我想我会把它们张贴在这里以获得一些澄清。如果这是重复的,请告诉我,我会关闭它。

好的,话虽如此,我想开始学习 C++。我来自 C# 背景,我非常尊重 Visual Studio 及其功能。现在,我的问题是。与非 Microsoft 版本(如 MinGW)相比,Visual Studio 的编译器在 C++ 上的表现如何?

我的事情是这样的。我对 Microsoft 没有任何问题,但我真的很想以“纯粹”的形式学习 C++,而不是被任何特定的实现所迷惑。 Visual C++ 对 .NET Framework 的依赖程度如何?是否可以通过 Visual Studio 创建一个“纯”C++ 应用程序而不使用任何 .NET 或开销? Visual Studio 编译器是像处理 C#/VB 一样将 C++ 编译成 CIL,还是像其他编译器一样将它编译成 CIL?

感谢任何人可以提供的帮助!

最佳答案

Visual C++ 编译器会将 C++ 代码编译成与 .NET 框架无关的独立 EXE。

获得 .NET 包袱的唯一方法是将 C++ 编译为“托管”。

如果您创建一个新项目(文件|新建|新建项目)然后从项目类型的 Visual C++ 子菜单中选择“Win32”并选择“Win32 控制台应用程序”Visual Studio 将创建一个带有几个源代码的简单项目将编译为可执行文件的文件。

大多数时候,Visual C++ 与其他编译器非常相似。避免使用#pragmas、微软库(MFC、ATL),你应该没问题。

编辑(感谢 Cheeso)- Documentation of where Visual C++ diverges from standard .

一般来说,我会建议对线程和网络使用 boost 库,因为它们可以在许多平台(即 linux)上运行。此外,如果您的代码可以在 GCC 和 Visual Studio 中编译,那么您就很好地保持了它的可移植性。

关于c++ - 使用纯 C++ 编译器与 Visual C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1575937/

相关文章:

c++ - 在对象上调用静态成员函数——有没有办法让它变成编译器错误?

c++ - SIGABRT on std::ifstream关闭

c++ - 如何检测库是否使用 XP 兼容性 (v120_xp)?

visual-studio - Visual Studio IDE 的哪些部分是开源的?

c++ - "ListNode dummy{-1, head};"是什么意思?

c++ - 包含 Commdlg.h 后打开未定义的文件名?

visual-c++ - Visual C++ Redistributable for Visual Studio 2017 的 MSM 文件在哪里?

c++ - 将线近似为平面图轮廓

delphi - TActionList中的 Action 可以在Delphi XE IDE中排序吗?

ide - Rider IDE - 如何固定打开的文件选项卡以将其拉到右侧