我自从早期以来第一次使用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是否可以在任何地方记录这些模板?
答案 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 :(得分:0)
- “没有公共语言运行时支持”是否也意味着没有CLI / CIL,因此没有C ++ / CLI语法?换句话说,该设置的状态 确定这是“C ++ / CLI”还是普通的旧非托管C ++?
醇>
是的意思是。
当您选择“创建新项目”时,您可以选择(某些内容)“CLR控制台应用程序”这意味着C ++ / CLI控制台应用程序。
如果在项目属性中选择了选项
,也可以创建托管C ++控制台应用程序(某事)“CLR支持,旧语法(/ clr:oldSyntax)”(我有俄语版的MS VS 2010)