CLI/C++是什么?它与“普通”的C++有何不同?

10

首先,让我阐明一下我所说的“普通”C++是什么意思- 我目前正在阅读Walter Savitch的《C++问题解决》。据我所知,这本书并非专门针对Microsoft或Unix编写的。那么我的问题是,我从这本书中学到的东西(我用它来获取关于C++的普遍知识)与我不断听到的CLI C++有何不同?

CLI C++只是在使用Visual C++时遇到的吗?我完全困惑了。

3个回答

17

C++/CLI(也有时称为 C++ / CLR)是一种介于本机 C++ 和 .NET 框架之间的语言。

它通常用于需要桥接一些本机代码(纯 C++)和托管代码(如 VB、C#、F# 等)的应用程序。

然而,C++/CLI 与普通 C++ 相比是完全不同的东西。当人们说 Visual C++ 时,其含义可能因上下文而异。有时他们指的是启用了公共语言运行时 (CLR) 层的 C++,而有时他们仅指普通的 C++。很遗憾,在这里存在很多不同的术语和错误的用词,但你能做些什么呢?


如果我只想使用标准的C++、模板和Boost,那么我就不需要CLR了吗?如果我想使用.NET库,为什么还需要使用CLR呢?谢谢。 - Jean
1
每当您计划调用.NET库或者希望您的代码与调用它的.NET代码相互兼容时,您都可以使用CLR。如果您只想编写纯C++,那么就不必费心使用C++/CLI。两者都有其特定的领域,但如果您正在编写纯C++,则没有必要使用CLR。 - Mike Bailey
5
有时也称为C++/CLI,如果有人错误地称之为C++/CLR,则是因为他们不了解这门语言。 - ildjarn

8

C++和C++/CLI有很大的区别。C++/CLI是由微软开发的托管.NET版本的C++,旨在将.NET层与本地代码相连接。


1

c++/cli是微软Visual c++品牌工具的当前版本。(在c++/cli之前有不同的设计)

c++/cli实际上是两个版本的c++。其中一个是高度标准化的c++编译器,另一个是运行在CLI虚拟机上的c++版本。显然,标准c++永远不会在VM上运行,因此决定了这种语言的两种方法。

使用它时,您可以将未管理和托管代码混合在一起。 "未管理"是像标准c++一样编译的代码。 "托管"是编译为CLI (.Net)虚拟机的字节码的代码。微软为托管和未管理的代码都提供了广泛的API。使用该产品,您可以访问两个API。

您可以使用该语言和工具开发标准c++应用程序,只需小心不要使用非标准扩展即可。如果您有疑问,建议偶尔在另一个编译器中进行编译。托管侧完全不符合标准,即使未管理侧也有大量的非标准扩展。

PS我不是专家,但我很好奇,上周读了这个。我认为你的问题值得回答。祝你好运!


1
"c++/cli是微软Visual c++品牌工具的当前版本。" 这有点不准确/误导。Visual Studio是工具集。C++/CLI是其中支持的一种语言。 - DuckMaestro
1
“在CLI虚拟机上运行的C++版本” - CLR是一种虚拟执行环境,而不是虚拟机。在执行之前,IL代码总是被编译为本机机器代码。 “显然标准C ++不能在VM上运行” - 关于此事没有明显的事实,并且C ++语言规范中没有要求C ++必须编译为本机机器指令。 C ++可以很好地实现在VM上运行,并仍然称为“标准C ++”。 - IInspectable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接