vs 2010中VC++的6个新特点
当前位置: >
> vs 2010中VC++的6个新特点vs 2010中VC++的6个新特点更新:&&&&编辑:飞阳&&&&来源:&&&&人气:加载中...&&&&字号:|标签:&&&&&&&&
一、Visual C++工程及其构建系统
(一)MSBuild
现在,Visual C++方案和项目都MSBuild进行构建,从而取代了原来的构建VCBUILD.exe。对于其他的Visual Studio语言和项目类型,MSBuild供给了一样的灵便性,可扩展性和基于XML的构建支持。为此,Visual C++项目文件现在也了风行的XML文件款式,并具有.vcxproj文件扩展名。另外,从早期版本的Visual Studio中供给的项目文件将被自动转换为新的文件款式。有关MSBuild工具的更多信息,,请参见“MSBuild(Visual C++)”。
现在,设置位于两个地方。你可以应用项目属性页来设置每个项目对应的VC++目录,也可以应用属性管理器和一个属性表来设置全局性的并且使每个配置值对应的VC++目录。
(三)工程依附性
在VC++早期版本中,您可以定义在同一个方案中的项目之间的依附性。如今在这些解决方案转换为新的项目文件款式后,相应的依附性也被转换为项目到项目的引用。这种变更将会影响使用,因为解决方案依附性和项目到项目的引用是不同的。
(四)宏与环境变量
新引入的_ITERATOR_DEBUG_LEVEL宏支持针对迭代器调用调试支持。你可以应用这个宏来代替较老的_SECURE_SCL和_HAS_ITERATOR_DEBUGGING宏。
二、Visual C++库
(一)/analyze警告
绝大多数的/analyze(企业代码分析)警告如今都已经被从CRT,MFC和ATL库中移除。
(二)重启动管理器
如果您的使用系统出现意外关闭或重新启动情况的话,重启管理器支持自动保存文件并重新启动您的使用。例如,当您的使用程序由于自动而关闭时您可以应用重启管理器来再次启动这个使用程序。欲领会更多有关如何将使用程序配置为应用启动管理器的信息,请参见《如何:添加重启动管理支持》一文。
(三)MFC库
新引入的CTaskDialog类可用于代替标准的AfxMessageBox消息框。CTaskDialog类能够显示和收集比标准的消息框更多的信息。
(四)新的ATL宏
又有新的宏被添加到ATL宏库中,以便进一步扩张原有的PROP_E***Y_TYPE和PROP_E***Y_TYPE_EX宏的现有功能。另外新增加的两个宏PROP_E***Y_INTERFACE和PROP_E***Y_INTERFACE_EX支持你添加一个有效的CLSID列表。最后一对新宏PROP_E***Y_INTERFACE_CALLBACK和PROP_E***Y_INTERFACE_CALLBACK_EX支持您指定一个回调函数,以断定某个CLSID是否是有效的。
(五)新库
新引入的SafeInt库能够确保履行安全的算术运算,从而有效地避免了经常出现的整数溢出。这个库还支持对比不同类型的整数。
三、集成开发环境(IDE)
(一)改进的差错智能感知支持
在Visual Studio 中,集成开发环境(IDE)支持更好地检测可能导致丧失智能感知支持的差错,并在这些内容下面显示以红色波浪下划线。此外,集成开发环境还支持把智能感知的差错输出到差错列表窗口中。要想观察导致的相关代码,你只需要双击差错列表窗口中的差错即可。
(二)#include自动完成特点
集成开发环境还支持#include关键字的自动完成。当您键入#include时,集成开发环境将自动创建一个包孕有效的头文件的下拉列表供您选择。如果你持续输入一个文件名,集成开发环境将自动根据您的输入加以过滤。在任何时候,你都可以根据这个列表来选择你想要包括的文件。显然,这一功能可以让您快速地包括那些尚不确切文件名的文件。
四、Visual C++编译器和器
(一)auto关键字
如今,auto关键字有了新的用场。你可以应用默认的auto关键字来声明一个变量的类型是从此变量声明的初始化表达式中推导出的。而新的/Zc:auto编译器选项支持调用auto关键字的新意义或以前的意义。
(二)decltype操作符
decltype操作符能够返回一个指定表达式的类型。因此,你可以应用decltype操作符并结合应用auto关键字来声明一个繁杂类型或者是仅为编译器所知晓的类型。例如,你可以应用这样的组合来声明一个模板函数,而此模板函数的返回类型取决于其模板参数的类型。或者,你还可以声明一个模板函数,而此模板函数调用另一个函数,然后返回被调用函数的返回类型。
(三)Lambda表达式
Lambda函数有一个函数体,但没有函数名。Lambda函数把函数指针和函数对象两者的最佳组合到了一起。
你可以应用一个lambda函数来作为模板函数参数以代替一个函数对象,或者联合应用auto关键字来声明一个lambda类型的变量。
(四)Rvalue引用
右值rvalue引用声明符(&&)能够声明对一个右值rvalue的引用。右值引用能够使你应用动态语义(move semantics)和完善转发(perfect forwarding)来编写更有效的构造函数,普通函数和模板。
(五)static_assert声明
static_assert声明有助于在编译时中的断言,这不同于其他那些在运行时进行的断言机制。如果断言失败,则编译失败并显示出指定的差错信息。
(六)nullptr和__nullptr关键字
Visual C++编译器允许您在本机代码或托管代码中应用nullptr关键字。nullptr关键字用于指出一个对象句柄、内部指针或本地指针类型并不指向一个对象。当您应用/clr编译器选项时,编译器将把nullptr解释为托管代码,而在不应用/clr选项时解释为本机代码。
微软特定的__nullptr关键字与nullptr关键字意思相同,但它只适用于本机代码。如果您应用/clr编译器选项编译本机C/C ++代码,那么编译器不能断定nullptr关键字是一个本地关键字还是托管关键字。为了使编译器更清楚地理解你的意图,你可以应用nullptr关键字来指定当前操作为托管操作,而应用__nullptr关键字来指定当前操作为本地操作。
(七)/Zc:trigraphs编译器选项
默认情况下,三字符组(trigraphs)支持是被禁用的。在这种情况下,你可以应用/Z?: trigraphs编译器选项来启用三字符组支持。
一个三字符组由两个连续的问号后面跟着一个独特的字符组成。编译器能够应用相应的标点符号来取代这个三字符组。例如,编译器能够应用#(数字符号)字符替代三字符组??=。你还可以在C源文件中应用三字符组,因为这些文件中应用的是不会包孕某些标点字符的字符集。
(八)新的基于配置的优化选项
PogoSafeMode关键字是一个新的基于配置的优化选项。你可以应用PogoSafeMode关键字来指定你想应用安全模式还是快速模式来优化您的使用程序。注意,安全模式是线程安全的,但它比快速模式慢一些。快速模式是默认的优化行为。
(九)新的通用语言运行时(CLR)选项/clr:nostdlib
新引入了一个通用语言运行时(CLR)选项/clr:nostdlib。如果你的系统中包括了相同库的不同版本,那么编译器将显示差错提示。这个新的选项可以使你排除默认的CLR库,从而使你的程序可以应用一个特定的版本。
(十)新的pragma指令detect_mistmatch
新引入的pragma指令detect_mismatch能够支持您应用相同的名称来调换您的文件中的某个特定的标记(相对于其他的标记)。如果相同的名称拥有多个值,连接器会发出差错提示。
五、工具
(一)ATL控件向导
在ATL控件向导不再自动填充ProgID字段。如果一个ATL控件没有一个ProgID,那么其他工具可能无法应用这个控件。这样的一个工具的例子是“Insert Active Control”对话框。有关此对话框的更多信息,请参考“插入ActiveX控件对话框”。
(二)MFC类向导
Visual Studio 中重新引入了MFC类向导。如今,您可以在解决方案的任何地方调用类向导。MFC类向导允许您添加类、消息和变量,而不必手动改动单个的代码文件。
六、微软宏汇编器参考
新引入的YMMWORD数据类型支持***X(英特尔高档矢量扩展)指令中包孕的256位的多媒体操作数。
Visual C++延伸导语
Visual C++是微软开发的一个IDE(集成开发环境),换句话说,就是应用c++的一个开发平台.有些就是这个编出来的...另外还有VB,VF.只是应用不同语言...
经典的Visual C++ 6.0
但是,VC++是Windows平台上的C++编程环境,学习VC要领会很多Windows平台的并且还要掌握MFC、ATL、COM等的,难度对比大。Windows下编程需要领会Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码的二进制标准,需要掌握其基本原理等等
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
分类选择您可能在找这些帮设计师节省1,085,543,232小时VC++&2010下的MFC应用程序与Windows窗体应用程序的区别
如上图,说说这两者的区别。
两个都可以直接创建windows窗体,这两个在应用上有什么不同?
感觉MFC的控件和属性设置功能不如windows窗体应用程序,怎么MFC属性里面好像大部分都只能设置TRUE、FALSE?
我感觉MFC好像没windows窗体应用程序灵活,但软件大部分都是用MFC吧?那windows窗体应用程序有什么用呢?
摘自CSDN的帖子:http://bbs.csdn.net/topics/
-------------------------------------------------------------------------------------------------
从结果来看,完全一样
但过程上来看,MFC就要简单的多。
因为MFC用windows 窗体应用程序写了很多工具,可以直接使用,可以让我们的工作简化很多。
MFC的开发方法和windows 窗体应用程序完全不同。
如果要用,就是先用windows 窗体应用程序先写成MFC,再进行开发。&
运行起来两者并没有不同,MFC其实就是封装了大部分的API,这样你调用一个MFC函数或new一个MFC的类相当于调用了很多API函数了,这样就节省了大量的时间了;两者的开发方法有点不同,MFC注重于现在类的重用;API方法注重于能熟悉使用WINDOWS
-------------------------------------------------------------------------------------------------
:我一直有一个疑问:在windows应用程序里面可以轻松设置界面(字体、大小、颜色……),怎么到了MFC应用程序就不行了?
:MFC&通过GDI提供的函数来设置的。
-------------------------------------------------------------------------------------------------
因为Windows窗体这个说法容易误导人,应该叫Windows&Forms是.NET引入的,可以像C#、VB.NET那样可以拖拽编程,.NET库把所有操作系统细节都封闭了,你使用各种控件的功能时就像VB6那样时由运行库代劳很多细节,你不需要知道对话框模板或GDI画刷之类的。不过程序是解释执行的,而且必须带.NET组件***包才能发布。不过一般的程序也能接受。
不过对于VC开发的程序,大多数还是用MFC做的,因为考虑MFC是编译非解释,效率更高。如果想用.NET完全可以用语法更简洁的C#,.NET下C++自身的很多功能比如指针什么的就不能随便用了、VC++.NET总有些不伦不类。
不过用MFC比纯用Windows&SDK写C程序要方便很多了,用SDK写就是那个“Win32项目”,所有控件的创建和消息处理都必须自己动手,稍微大一点的程序就很难管理了。而MFC点几下就能产生一个SDI/MDI框架,开发效率已经提高很多倍了。对各种Windows功能的封装、文档视图结构什么的都大大简化了绘图、打印、保存等操作。虽然是十几年前就成熟的东西,但是到现在来说还是宝刀未老。
-------------------------------------------------------------------------------------------------
提炼出来的结果:
要用C++的话就用MFC,要用.NET的话就用C#。
我也觉得C++/CLI这一套比C#复杂多了,编起来寸步难行……
补充,还有一个是Win32项目,这个也比较难用。新建一个项目后运行效果如下:
自动生成的代码如下:
看了C#后再来看这些,顿觉复杂。