命令行界面/C++。它与'normal' c++ 或 visual c# 有何不同?



我在学校用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++是一种通用的编程语言,适用于所有的计算机系统,从最大的主机到最小的微控制器。没有像垃圾收集指针或委托这样的功能,因为在某些类型的硬件上提供这些功能是非常困难的。

实际上,尽管它们共享相似的语法,但它们是两种完全独立的语言。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++。

最新更新