gpt4 book ai didi

c++ - 对 Microsoft C++ 产品和术语感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:25 26 4
gpt4 key购买 nike

自 .Net 出现之前,我第一次使用 C++,我对他们的一些 C++ 产品及其命名方式感到困惑。

在 .Net 之前,Microsoft 支持一种称为 C++ 的语言,该语言非常接近行业标准。但是当他们引入 .Net 时,他们为他们的 C++ 添加了很多扩展,并将其称为“托管 C++”。

然后在 2005 年,他们放弃了它,取而代之的是“C++/CLI”,这是一个符合微软(ISO 认证)通用语言基础设施的 C++ 版本,并且有一些语法变化(例如,^ 而不是 * 用于指向.Net 对象等)。 C++/CLI 可以编译为平台中立的通用中间语言 (CIL)。在运行时,公共(public)语言运行时 (CLR) 将其处理成机器代码。这是来自维基百科的图表: http://en.wikipedia.org/wiki/File:Overview_of_the_Common_Language_Infrastructure.svg

这是我感到困惑的地方:在 Visual Studio 2010 Professional 中,我在任何地方都看不到术语“C++/CLI”,即使这应该是 Microsoft 提供的。如果我执行 File->New->Project->Other Languages,它会让我选择“Visual C++”

1.什么是“Visual C++”,它与 C++/CLI 有什么关系?

在“Visual C++”的顶层,它允许我创建一个“空项目”,并在它的项目属性中,将公共(public)语言运行时设置为“无公共(public)语言运行时支持”

2.“无公共(public)语言运行时支持”是否也意味着没有 CLI/CIL,因此没有 C++/CLI 语法?换句话说,该设置的状态是否决定这是“C++/CLI”还是普通的旧非托管 C++?

在“Visual C++”下,它还有 CLR 和 General 的条目。如果我创建一个 CLR 空项目,我会注意到公共(public)语言运行时设置为“公共(public)语言运行时支持/clr”

3. 这是 Visual C++ 空项目和 Visual C++ CLR 空项目之间的唯一区别吗?

4.什么是 Visual C++“通用”空项目?

5. 所有这些东西都在某处记录/解释了吗?

编辑:自从发布我的问题后,我注意到它变得更加复杂。公共(public)语言运行时的默认属性因 CLR 节点下的不同模板而异,从 CLR 到具有“纯”MSIL 的 CLR 到具有“安全”MSIL 的 CLR。这只是一个“公共(public)语言运行时”设置。 Microsoft 是否在任何地方记录了这些模板?

最佳答案

关于 Microsoft Visual Studio 的维基百科文章说:

Microsoft Visual C++ is Microsoft's implementation of the C and C++ compiler and associated languages-services and specific tools for integration with the Visual Studio IDE. It can compile either in C mode or C++ mode. For C, it follows the ISO C standard with parts of C99 specification along with MS-specific additions in the form of libraries. For C++, it follows the ANSI C++ specification along with a few C++11 features. It also supports the C++/CLI specification to write managed code, as well as mixed-mode code (a mix of native and managed code). Microsoft positions Visual C++ for development in native code or in code that contains both native as well as managed components. Visual C++ supports COM as well as the MFC library. For MFC development, it provides a set of wizards for creating and customizing MFC boilerplate code, and creating GUI applications using MFC. Visual C++ can also use the Visual Studio forms designer to design UI graphically. Visual C++ can also be used with the Windows API. It also supports the use of intrinsic functions, which are functions recognized by the compiler itself and not implemented as a library. Intrinsic functions are used to expose the SSE instruction set of modern CPUs. Visual C++ also includes the OpenMP (version 2.0) specification.

那么,我可以尝试回答您的问题(顺便说一下,这些问题太宽泛了):

  1. Microsoft Visual C++ (通常缩写为 MSVC 或 VC++)是 Microsoft 的商业(提供免费版本)集成开发环境 (IDE) 产品,用于 C、C++ 和 C++/CLI 编程语言。它具有用于开发和调试 C++ 代码的工具,尤其是为 Microsoft Windows API、DirectX API 和 Microsoft .NET Framework 编写的代码。
  2. 我会说是的。
  3. 我会说是的,但这本身就是一个很大的区别,即使它是唯一的区别。
  4. 我不太清楚。我想一个空项目是一个旨在让您向其中添加自己的东西的项目。 “一般”可能意味着该项目不属于任何特定类型。
  5. Microsoft 在 MSDN 上有大量文档,但长期以来一直让人们混淆真正的 C++ 和他们自己管理的 C++-ish 语言,无论他们今天怎么调用它。 (我一直认为这很糟糕,因为 C++ 就是 C++,你的新语言有很多名字,他们故意这样做是为了吸引无知的用户。但最后一句话是一种意见,所以它不属于这里。因此括号。)

关于c++ - 对 Microsoft C++ 产品和术语感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com