13

C++ CLI编译器是否能够在不修改的情况下编译一些大型 C++ 类集?

C++ CLI 是 C++ 的超集吗?

4

6 回答 6

10

根据维基百科

C++/CLI 应该被认为是一种自己的语言(例如,使用一组新的关键字),而不是面向 C++ 超集的托管 C++

于 2008-10-07T18:14:03.967 回答
4

技术上没有,但取决于 C++ 代码的标准,你可能会很好。当你进入 Windows 的东西时,你可能会遇到问题。我曾经在 C++/CLI 中编译过我们在工作中使用的整个游戏引擎,它工作得很好。一位同事对所有 Mozilla 都做了同样的事情,但没有这样的运气。

于 2008-10-07T19:11:09.530 回答
2

我对 C++/CLI 的学习曲线还是个新手——但我自己也有同样的问题,到目前为止我已经确定 C++/CLI 作为一种语言是标准 C++ 的超集。

如果您不使用 CLI 扩展,您的 C++ 代码最终将成为本机非托管代码,并且应该基本相同,但编译为 CLR IL,而不是本机 x86。

一旦您开始使用 CLI 扩展(并开始使用对象/句柄/托管类),您就开始与底层 CLR 平台进行更频繁的交互。到那时,它本质上就变成了一种新的“语言”,您必须将您的想法区分为“非托管”方面和“托管”方面。

于 2009-01-29T20:56:08.533 回答
2

C++/CLI 不是 C++ 的超集。它是一个带有添加的子集。EG C++/CLI 不支持多重继承。

安杰洛

于 2010-10-24T00:25:33.633 回答
1

Marcus Heege 的书“Expert C++/CLI.NET for Visual C++ Programmers”的第 3 页指出:

C++/CLI 是对 C++ 语言进行的一组扩展,可从 CLI 的实现提供的服务中受益。

在同一页面下方:

C++/CLI 是 C++ 语言的超集。

他的优秀著作可从这里免费获得。

于 2009-05-19T05:02:26.637 回答
1

我能够将整个 Qt 库(很大)编译为 C++/CLI,只需稍作修改(主要是在构建环境中,但也修复了 Qt 源代码中的一个错误)

于 2012-04-04T09:13:44.963 回答