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

时间:2014-01-30 17:47:47

标签: c++ visual-studio-2010 visual-studio c++-cli clr

我自从早期以来第一次使用C ++,我对他们的一些C ++产品以及他们如何命名它们感到困惑。

在.Net之前,微软支持一种名为C ++的语言,它非常接近行业标准。但是当他们介绍.Net时,他们在C ++中添加了很多扩展,称之为“托管C ++”。

然后在2005年,他们删除了它并用“C ++ / CLI”替换,这是一个符合Microsoft(ISO认证)公共语言基础结构的C ++版本,并且有一些语法更改(例如,^而不是*用于指向到.Net对象等)。 C ++ / CLI可以编译为平台中立的通用中间语言(CIL)。在运行时,它由公共语言运行时(CLR)处理为机器代码。这是维基百科的图表: http://en.wikipedia.org/wiki/File:Overview_of_the_Common_Language_Infrastructure.svg

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

1。什么是“Visual C ++”以及它与C ++ / CLI的关系?

在“Visual C ++”的顶层,我可以创建一个“空项目”,在项目属性中,公共语言运行时设置为“无公共语言运行时支持”

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

在“Visual C ++”下面,它还有CLR和General的条目。如果我创建一个CLR Empty项目,我注意到Common Language Runtime被设置为“Common Language Runtime Support / clr”

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

4. 什么是Visual C ++“常规”空项目?

5。这些内容是否已在某处记录/解释?

编辑:自发布我的问题后,我发现它更复杂了。公共语言运行时的默认属性在CLR节点下从CLR到CLR的不同模板上有所不同,“Pure”MSIL到CLR的“安全”MSIL。这只是一个“公共语言运行时”设置。 Microsoft是否可以在任何地方记录这些模板?

2 个答案:

答案 0 :(得分:1)

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

  

Microsoft Visual C ++是Microsoft的C和C ++实现   编译器和相关语言 - 服务和特定工具   与Visual Studio IDE集成。它可以在C中编译   模式或C ++模式。对于C,它遵循ISO C标准的部分   C99规范以及特定于MS的添加形式   库。 对于C ++,它遵循ANSI C ++规范   一些C ++ 11功能。它还支持C ++ / CLI规范   编写托管代码,以及混合模式代码(本机和   托管代码)。 Microsoft将Visual C ++定位于开发中   本机代码或包含本机代码和托管代码的代码   组件。 Visual C ++支持COM以及MFC库。对于   MFC开发,它提供了一组用于创建和创建的向导   自定义MFC样板代码,并使用创建GUI应用程序   MFC。 Visual C ++也可以使用Visual Studio表单设计器来实现   以图形方式设计UI。 Visual C ++也可以与Windows一起使用   API。它还支持使用内在函数   编译器本身识别的函数,而不是作为   图书馆。内部函数用于公开SSE指令   一套现代的CPU。 Visual C ++还包括OpenMP(2.0版)   说明书

所以,我可以回答你的问题(顺便说一句,这些问题太宽泛了):

  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 ++语言混淆之间有着悠久的传统,无论他们今天如何称呼它们。 (我一直认为这很糟糕,因为C ++是C ++,你的新语言有很多名字,而且他们是故意这样做的,以获得无能的用户。但这最后一句是一个意见,所以它不属于这里。因此括号。)

答案 1 :(得分:0)

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

是的意思是。

当您选择“创建新项目”时,您可以选择(某些内容)“CLR控制台应用程序”这意味着C ++ / CLI控制台应用程序。

如果在项目属性中选择了选项

,也可以创建托管C ++控制台应用程序

(某事)“CLR支持,旧语法(/ clr:oldSyntax)”(我有俄语版的MS VS 2010)