CLI / c++.它和'normal'有什么不同?c++或visual c#
本文关键字:c++ visual normal 它和 CLI 什么 | 更新日期: 2023-09-27 18:15:40
我在学校用Dev c++编写了一些没有野心的小程序,现在在学校已经很多年了。但现在它出来了,我需要做一个窗口应用程序。我看到有些人用visual studio来做这个。
几天前我得到了Visual Studio c++ express,经过一段时间的编码,几行后我意识到它与"正常"c++有很大的不同。甚至字符串的声明也让我头疼。我想问,如果也许visual c#会更类似于我所知道的,或者也许有一些其他的方式对我来说,在c++中编码窗口应用程序,我知道,使用拖放界面,当涉及到创建按钮,文本框和东西(像在visual studio)?
那么最重要的是,Visual c#是否更像"普通的"c++,如果不是,你们有什么替代Visual的建议吗?
c++和c++/CLI,实际上只是为不同目的而设计的不同语言。c++/CLI在设计时只考虑一个目标——CLR,因此将垃圾收集的指针、接口、委托和类似的东西作为语言的第一类组件公开。c++/CLI是这样设计的,大多数有效的c++代码都可以被编译为针对CLR而不需要重写。这里的缺点是编译现有的c++代码通常会使用本机指针,这些指针不能在CLR上表示,除非将其置于unsafe
模式。这意味着你不能在部分信任的环境中运行这样的编译代码,比如Sliverlight或Windows Phone。
实际上,尽管它们共享相似的语法,但它们是两种完全独立的语言。c++/CLI通常以更接近c#而不是c++的风格编写。
现在,为了解决您的具体问题:
即使是字符串的声明也让我头疼。
c++/CLI提供了System::String
类型作为其基类库的一部分。标准c++还提供了std::basic_string
(当专门用于char
时,它被定义为std::string
),因此,您可能会看到一些类型的冲突,处理这种情况的唯一方法通常是显式指定您想要的。
我想问,如果也许visual c#会更类似于我所知道的,或者也许有一些其他的方式对我来说,在c++中编码窗口应用程序,我知道,使用拖放界面,当涉及到创建按钮,文本框和东西(像在visual studio)?
EDIT:以下内容在Visual Studio 2010中可能不再正确。我还没机会核实。(更多细节请参见此回答的评论)
在visual Studio中没有可用的可视化设计器类工具来生成c++应用程序。WPF和Windows Forms都有设计器,它们都是CLR技术。要使用这些设计器,必须使用c++/CLI,而不是c++。