CLI / C ++。它与'普通'c ++或visual c#有什么不同?

时间:2011-11-26 00:53:51

标签: c# c++ visual-studio c++-cli

我在Dev C ++学校编写了一些不是雄心勃勃的小程序。但现在它出来我需要制作一个窗口应用程序。我看到有些人使用visual studio。

几天前我得到了Visual Studio C ++ express,经过一段时间的编码后,经过几行我意识到它与我迄今使用的“普通”C ++有很大不同。即使是字符串的声明也让我很头疼。我想问一下,如果看起来c#可能与我所知道的更相似,或者对我来说可能有其他方式,用C ++编写窗口应用程序,我知道,使用拖放界面,当涉及到创建按钮时,文本框和内容(如在visual studio中)?

所以最重要的是,Visual c#更像是“普通”的c ++,如果没有,你们有没有建议取代Visual? 任何帮助表示感谢。

1 个答案:

答案 0 :(得分:3)

C ++和C ++ / CLI,实际上只是用于不同目的的不同语言。 C ++ / CLI在设计时考虑了一个目标--CLR,因此将垃圾收集的指针,接口,委托等作为语言的第一类组件公开。 C ++ / CLI的设计使得大多数有效C ++代码都可以编译为以CLR为目标而不会被重写。这里的缺点是编译现有的C ++代码通常会使用本机指针,除非将其置于unsafe模式,否则无法在CLR上表示。这意味着您无法在部分信任环境中运行此类已编译的代码,例如Sliverlight或Windows Phone。

另一方面,C ++是一种通用编程语言,旨在针对从最大的主机到最小的微控制器的所有计算机系统。没有垃圾收集指针或代理可用的功能,因为在某些类型的硬件上提供这样的功能将非常困难。

实际上,尽管共享相似的语法,但它们是两种完全独立的语言。 C ++ / CLI通常以更接近C#而不是C ++的方式编写。

现在,要解决您的具体问题:

  

即使是字符串声明也让我很头疼。

C ++ / CLI提供System::String类型作为其基类库的一部分。标准C ++还提供std::basic_string(专门用于std::string时为char的typedef。)因此,您可能会看到某些类型的冲突,并且解决此问题的唯一方法通常是明确指定你想要的那个。

  

我想问一下,如果看起来c#可能与我所知道的更相似,或者对我来说可能有其他方式,用C ++编写窗口应用程序,我知道,使用拖放界面,当涉及到创建按钮,文本框和东西(如在visual studio中)?

编辑:在Visual Studio 2010中可能不再适用以下内容。我没有机会验证。 (有关详细信息,请参阅此答案的评论)

Visual Studio中没有可用的视觉设计器工具来生成C ++应用程序。有WPF和Windows Forms的设计者,这两者都是CLR技术。要使用这些设计器,您必须使用C ++ / CLI,而不是C ++。