C++ CLI编译器是否能够在不修改的情况下编译一些大型 C++ 类集?
C++ CLI 是 C++ 的超集吗?
根据维基百科:
C++/CLI 应该被认为是一种自己的语言(例如,使用一组新的关键字),而不是面向 C++ 超集的托管 C++
技术上没有,但取决于 C++ 代码的标准,你可能会很好。当你进入 Windows 的东西时,你可能会遇到问题。我曾经在 C++/CLI 中编译过我们在工作中使用的整个游戏引擎,它工作得很好。一位同事对所有 Mozilla 都做了同样的事情,但没有这样的运气。
我对 C++/CLI 的学习曲线还是个新手——但我自己也有同样的问题,到目前为止我已经确定 C++/CLI 作为一种语言是标准 C++ 的超集。
如果您不使用 CLI 扩展,您的 C++ 代码最终将成为本机非托管代码,并且应该基本相同,但编译为 CLR IL,而不是本机 x86。
一旦您开始使用 CLI 扩展(并开始使用对象/句柄/托管类),您就开始与底层 CLR 平台进行更频繁的交互。到那时,它本质上就变成了一种新的“语言”,您必须将您的想法区分为“非托管”方面和“托管”方面。
C++/CLI 不是 C++ 的超集。它是一个带有添加的子集。EG C++/CLI 不支持多重继承。
安杰洛
Marcus Heege 的书“Expert C++/CLI.NET for Visual C++ Programmers”的第 3 页指出:
C++/CLI 是对 C++ 语言进行的一组扩展,可从 CLI 的实现提供的服务中受益。
在同一页面下方:
C++/CLI 是 C++ 语言的超集。
他的优秀著作可从这里免费获得。
我能够将整个 Qt 库(很大)编译为 C++/CLI,只需稍作修改(主要是在构建环境中,但也修复了 Qt 源代码中的一个错误)