命令行界面/C++。它与'normal' c++ 或 visual c# 有何不同?
CLI/C++. How does it differ to 'normal' c++ or 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++/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++。
- Python中的for循环与C++有何不同
- 在C++中释放内存期间,迭代器与指针有何不同
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- 为什么作业提交网站的输出与Visual Studio不同
- 收益率和回报有何不同?
- 覆盖私有功能,它与受保护功能有何不同?
- 无论代码长度如何,以下代码的内存要求有何不同?
- stl::unordered_map 和 stl::vector 的销毁有何不同
- C++ 友元函数在内存位置上有何不同?
- C 是否具有接口类概念,如果它在那里,那么它与Java接口类别有何不同
- std::u8string与std::string有何不同?
- 两种类型转换有何不同?
- 这个语句到底是什么意思 stack<int, list<int> > 它与 stack 有何不同<int>?
- 英特尔®事务同步扩展新指令 (TSX-NI) 与英特尔 TSX 有何不同?
- 指向成员函数的指针与指向数据成员的指针有何不同
- 字符 * 和字符串在C++中有何不同?(在描述中编写代码)
- 在C++中,Mixin与面向策略的设计有何不同
- "cin>>"与"cin.get"有何不同?还是不是?
- C++11: boost::make_tuple 与 std::make_tuple 有何不同?
- 命令行界面/C++。它与'normal' c++ 或 visual c# 有何不同?