2010-01-28 87 views
4

我正在学习C++(显然是CLI),每当我发布一个问题说我使用C++时,有人跳下我的喉咙,说我没有使用C++,但C++/CLI。我并不确定有什么区别,因为我对此极为陌生,但似乎让每个人都感到不安。任何人都可以照亮一些差异?C++和C++ CLI有什么区别

作为第二个说明,我问这个问题的原因是因为有人建议我使用CLI来能够make a method accessible to my C# project。通过我的构造函数,我的C++项目中的一切都运行良好,但现在我希望能够从我的C#项目中调用相同的方法。

回答

1

Wikipedia's page在C++/CLI上有一些很好的信息。

+11

不像这个答案,它有* zero *信息。请提供摘要,以便阅读此文的人可能会找到问题的答案。在SO上简单地链接到外部资源被认为是不好的风格。 – jalf 2010-01-28 20:30:45

+0

@jalf,现在来吧,我的答案确实有一些*信息,它有一个链接到维基百科:)。我不觉得很难遵循一个链接来获得比我能提供的更完整的答案。 – Trent 2010-01-28 21:07:12

+3

首先,如果链接失效怎么办?被破坏?被删除?其次,对这个问题的答案感兴趣的人可能想要阅读多个答案。如果每个答案都只是一个外部资源的链接,那么突然间就有很多工作要做。第三,你在SO上的代表应该代表*你的知识和乐于助人。在这种情况下,您已经显示*零*知识,因此您的帖子现在保证为-1而没有别的。 – jalf 2010-01-28 21:47:54

2

C++ CLI在“公共语言接口”上运行。这基本上意味着当它被编译时,编译后的代码将最终分配为像通过C#生成的字节代码。

C++ CLI添加了大量扩展,比如C++中不存在的垃圾收集。 C++ CLI还允许“安全”的C++代码。在这种模式下,您不允许使用指针。在C++中没有“安全”的代码,它都是“不安全的”。 C++ CLI可以很好地连接.NET代码和C++库,但除此之外,我还没有找到它的用处。

的维基百科页面有一个很好的概述:http://en.wikipedia.org/wiki/C%2B%2B/CLI

是的,他们是正确的你蹦能在C++ CLI编程不会让你在C++编程......他们是不同的足以让你不能混合它们。

1

AFAIK,C++ CLI允许您访问.net框架。

它提供了一些垃圾收集和其他一些特定的功能不是C++

2

C++直接运行二进制符合你的硬件。 C++ cli是一个C++扩展,用于与MS公共语言运行库进行交互。它通常符合IL,并在.net运行时内执行。垃圾收集以及继承和接口是如何工作的,两者之间有许多不同之处。

使用c + + Cli的原因是获得了使用框架提供给您的数百个类的优势。这些都可以从任何CLR兼容的语言访问,所以有些人一直想知道为什么会用C++来访问框架,除非你链接到一些遗留代码。

+1

只要不使用ref类,就可以编译cli项目中的C++代码,正常的C++语法规则适用,并且您当然可以链接和使用标准C++库。 – rerun 2010-01-28 19:41:53

+0

@Neil:C++/CLI几乎是C++的超集(减去大多数其他C++编译器也没有实现的'export'),所以大多数合法的C++也将编译为C++/CLI。也就是说,几乎所有C++/CLI代码都使用扩展,所以它甚至不像C++那么相似。 – 2010-01-28 19:54:55