2023年6月21日发(作者:)

最全VS2010初级教程学习⼿册⽬录

《Visual C++ 2010⼊门教程》系列⼆:安装、配置和⾸次使⽤VS2010作者:董波⽇期:2010.6.15写在前⾯

在我还在上学的时候,我选择了C++,最初我⽤VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有⼀本叫《Visual C++ 2005⼊门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运⾏,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能⼲什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧?学C++⽤C++也有⼏年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助⼀下那些和曾经的我⼀样困惑的朋友,特别是学⽣朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有⼈教,有的时候也⾛了不少弯路,甚⾄连调试也不会,也不知道可以通过看调⽤堆栈看调⽤次序,还⾃⼰慢慢的去搜索,好傻啊。接下来我会做⼀个《Visual C++ 2010⼊门教程》系列,⽤来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是⾝边还没有⼈能够指导⼀⼆的。内容主要涵盖在Windows下⾯使⽤C++进⾏开发的常见内容,Visual Studio 2010的使⽤,如何创建新项⽬,如何调试,如果配置项⽬属性等等,另外还会介绍Visual C++ 2010中新加如的⼀些内容,包括⼀些新的STL组建,⼀些新的语法⽀持等等。由于本⼈⽔平有限,其中难免有错误,希望⼤家谅解,如果⼤家有发现问题还请务必及时指出来,否则误导了他⼈我就罪不容恕了。注意,本教程⾮C++教程,不会教你C++,只会教你如何使⽤ Visual C++ 2010去练习去学习其它C++教材上⾯的程序。因此建议⼤家认真的去看其他的C++教程,在使⽤Visual C++ 2010实践的时候如果遇到问题可以到这⾥来参考。推荐《C++ Primer》、《C++程序设计语⾔》《Visual C++ 2008⼊门经典》。第⼆章 安装、配置和⾸次使⽤VS2010本章将帮助⼤家安装Visual C++ 2010,帮助⼤家做⼀些常见的配置,以及第⼀次使⽤它来写HelloWord程序。安装Visual C++ 2010是属于Visual Studio 2010的⼀部分,这个在前⼀章中已经讲解过,实际上Visual C++ 2010也有更多的⼦版本,正如Windows7有旗舰版、家庭⾼级版、家庭初级版⼀样。在上⼀章的下载地址中有两个版本可以选择,我选择的时候旗舰版,这个功能最全⾯。如果你下载完毕了,应该有⼀个ISO镜像⽂件,如果你是从我给的地址下载的,那么那个序列号已经被 替换成正版序列号,直接安装即可。下⾯是ISO⽂件截图:

这就是光盘镜像⽂件,我们有多种⽅式可以安装它,你可以把它烧录成光盘,也可以⽤虚拟光驱软件安装它,由于这个ISO已经被修改过了,你甚⾄可以直接解压它,然后运⾏⾥⾯的进⾏安装。这⾥我使⽤虚拟光驱进⾏说明,⾸先我假设你已经安装好了虚拟光驱软件DAEMON Tools Lite,如果你还没有安装,请去游侠补丁⽹下载,因为在那⾥你总是能找到最新的免费版本。接下来我们通过虚拟光驱加载刚才下载好的ISO镜像:

在弹出的对话框中选择我们下载好的ISO⽂件。这个时候,虚拟光驱⾥⾯已经替我们打开了ISO⽂件,有的机器可能会⾃动弹出安装提⽰,有的不会。如果⾃动弹出安装提⽰,那么直接通过即可,如果没有弹出,那么⽤资源管理器⽅式进⼊虚拟光驱点击即可开始安装。

由于我已经安装好了VS2010,所以接下来⽆法给⼤家截图了,我就直接⽤⽂字描述吧。当弹出VS2010安装程序之后点下⼀步,然后我们可能会看到 完全 最⼩ ⾃定义 这样的选项,我推荐⼤家选择⾃定义,因为只有这样我们才可以⾃定我们安装的⽬录。接下来会选择安装的组件。这个时候我们会看到⼤量的VS2010的组件,这⾥我们可以选择是否安装Basic是否安装C#等等,我在⽹上找到⼀些图⽚,虽然跟中⽂版2010不⼀样,⼤家⼤概的样⼦是⼀样的,⼤家就凑合着看看吧。下⾯是开始的界⾯,我们应该选择安装VS2010.

上⾯这个时候选择同意。然后安装包会开始搜集信息:

选择⽬录:

然后就是开始安装了,注意安装的时候可能需要重启⼀两次。

最后安装成功:

配置当安装成功之后,我们就可以开始使⽤了,这⾥我先教⼤家做⼀些常见的配置,当然⼤家也可以直接⽤默认的设置,我这样配置主要是为了⽅便。下⾯通过开始菜单来启动VS2010吧:

如果你是第⼀次开始,那么可能会让你选择默认的环境设置,我们要使⽤VC当然选择VC的配置:

出现下⾯的画⾯表⽰已经成功安装和运⾏了。这是起始页⾯,以后你会经常见到它。

注意,你可能会没有VAssistX这个菜单,因为这个是个外部⼯具,以后会给⼤家解释它的⽤处,现在暂时忽略。接下来让我们来做⼀些常见的设置。通过菜单⼯具》选项调出配置对话框,下⾯是⼀些常见的设置:调处⾏号,选择⽂本编辑器,所有语⾔,把⾏号打成勾。

如果你想调整字体或者颜⾊,那么可以在这⾥选择: 单击⼯具栏的空⽩区域,让我们把⽣成⼯具栏调出来:

这样我们就可以直接在⼯具栏上⾯选择编译项⽬、编译整个解决⽅案、运⾏程序和调试程序了。选择⽣成⼯具栏旁边的⼩三⾓形可以⾃定,我们还可以添加⼀些按钮:

单击⾃定义界⾯下⾯的添加按钮就可以添加新的按钮了,现在我们把开始执⾏(不调试)添加⼯具栏中:

以前经常有⼈问我为什么我的程序闪⼀下就没了,这就是因为它们把调试(F5,那个实⼼的三⾓形)当成了运⾏(不调试,Ctrl+F5,空⼼带尾巴的三⾓形)了。当然是⼀闪⽽过啦。关于调试以后说到。

HelloWorld.下⾯让我们⽤VC++ 2010也就是VC10来做⼀个控制台的HelloWorld程序吧。VC2010⾥⾯不能单独编译⼀个.cpp或者⼀个.c⽂件,这些⽂件必须依赖于某⼀个项⽬,因此我们必须创建⼀个项⽬。有很多种⽅法都可以创建项⽬,可以通过菜单:⽂件,新建,项⽬;也可以通过⼯具栏点击新建项⽬进⾏创建。这⾥我们点击起始页⾯上⾯的新建项⽬:

点击之后进⼊新建项⽬向导:

上⾯选择Win32控制台应⽤程序,名称中输⼊HelloWorld点确定,⾄于是否为解决⽅案创建⽬录我们暂时不管,那主要区别在于解决⽅案是否和项⽬⽂件在同⼀⽬录。

接下来进⼊创建页⾯,在Win32应⽤程序向导的第⼀个页⾯直接点下⼀步即可:

下个页⾯记得选择空项⽬,我们不需要预编译头:

点击完成。这时候⼀个空的项⽬编译成功了,我们不妨编译⼀些试试。点击刚才添加的⽣成⼯具栏的⽣成按钮:

这时候我们会遇到编译错误,为什么呢?因为我们还没有Main函数,对于⼀个C++项⽬来说,⼀定要有⼀个且仅有⼀个main函数(Windows程序需要WinMain,区别以后再讲),可以是隐式提供也可以是显式提供,⾄于区别以后会讲到。现在让我们记住这个错误,以后遇到这个错误的时候⼀定要想想,我们项⽬中是否有Main函数。注意这时候即使你托⼀个有Main函数的⽂件到VC10中进⾏编译也是没有意义的,因为那个⽂件并不是我们项⽬的⼀部分。

现在我们可以添加⼀个代码⽂件进来了,这个代码⽂件可以是已经存在的也可以是新建的,这⾥新建⼀个。右键单击项⽬名称,选择添加,新建项: 在向导中选择代码、C++⽂件(.cpp),名称输⼊Main,确定。

这时候已经成功添加了⼀个Main⽂件,注意添加新⽂件的时候要防⽌重名:

然后我们输⼊最简单的⼏⾏代码,然后编译它吧,编译⽅法和上⾯⼀样。

如果编译成功你会看到上⾯的画⾯,如果失败会有错误提⽰,那么你可以根据提⽰去修改项⽬配置或者代码。然后让我们⽤Ctrl+F5或者点那个空⼼三⾓形运⾏⼀下吧:

OK了,接下来你可以通过更改这个程序去练习C++教材上⾯的程序了。这⼀章的内容就是这么多了,下⼀章中我们将讨论以下内容:什么是C++?什么是编程等等。

// ----- 以下内容⽤于帮助搜索引擎搜索 000=--- //Help Tag: VC2010 VS2010 编译C++ Visual C++ 2010 编译C++ VC2010控制台程序

VS2010正式到⼿,说说⼏点试⽤体会如果你认真看了这篇⽂章,那么说明你⼀定是开发⼈员,⽽且是希望深⼊了解VS2010的程序开发⼈员,我也是刚开始使⽤,权且来说⼏点体会吧,说的不好希望理解。 我⼀直在⼀家软件公司做开发,没犯过⼤错也没特⽜逼的成绩,就是在⼤街上⼀抓⼀⼤把的普通开发⼈员中的⼀个。就在昨天发⽣了⼀件让同事都很不蛋定的事,⽼板每个⼈给我们多配个显⽰器,⼀向视抠门如⽣命的的铁公鸡怎么⼀下⼦拔了⼀地鸡⽑呢,环顾办公室才发现⼏乎每个开发⼈员桌⾯都多了⼀台新的24⼨的⼤显⽰器,⽐起以前⽤的17的⼤头显⽰器可感觉爽多了,本着不⽤⽩不⽤的原则跟这些万恶的资本家就不要客⽓了,开⽤!HOHO~~~这还只是开始哦! 更神的是,给⼤家发了⼀个最新的Visual Studio 2010,偶滴个神那,这是我到公司以来唯⼀的⼀次升级换代,VS2010正式版发⾏才不多久,使⽤⼏天还处在刚学习的阶段,有⼏点体会跟⼤家分享,不好希望见谅。 ⽐起现在⽤的VS6.2010有⼏个新特点值得关注: 1、⾃定义开始页。在Visual Studio 2010中引⼊了⾃定义开始,更加个性化其实也可以说帮助我们更⼤便捷化了我们的操作,进⼊更快了。

2、Visual Studio2010⽀持了⼤家都向往的多显⽰器,虽然说⽅便了我们,也让⽼板更赚钱了,在VS2010中多显⽰器的⽀持可以把多个窗⼝放置到不同的屏幕上(开始BS新配的那台显⽰器了),提⾼⼯作效率。

3、C++ IDE跟并⾏运算增强了,2010开始⽀持最新的C++标准外,在IDE以及MFC库也有改进,另外调整了对项⽬⽀持还有⽤户体验,具体的待⼤家去试验,并⾏运算就不多说了,做开发的⼀般都知道这个对程序影响有多⼤。

4、云计算,Visual Studio 2010将包括允许云应⽤在托管和内部⽹络之间移动的模板。在2010年测试版的系统中⼼云管理⼯具将提供⼀个统⼀的控制台,以相同的⽅式来管理场内和云的资产。

关于云计算就不多说了,如果要我说下去单这个问题我就能给⼤家说上半天。5、估计很多⼈都会喜欢对微软最新操作系统也是未来主流的WINDOWS7开发的⽀持,毕竟未来是属于win7的。Visual Studio2010中提供了很多⼯具来帮助开发者开发基于Windows7的应⽤程序,例如升级了MFC的库和头⽂件以全⾯⽀持Windows 7的界⾯元素,包括Ribbon界⾯,搜索功能甚⾄多点触摸特性的⽀持。

Ribbon界⾯的消息处理流程 还有其它的⼀些新功能需要在使⽤中慢慢摸索,如VS2010可以和VS2008并⾏安装在同个机器上,都不会影响到你现有的VS2008的开发,这些需要在使⽤中⼀步⼀步的体会,还有诸如对项⽬管理和结构框架的⽀持这些都不容⼩嘘,也是VS2010中不可或少的功能,对于开发⼈员来说特别⽅便。 以后如果⼯作不忙了在来说⼏点体会供⼤家学习分享。

VS2010 中使⽤main函数作为C++的⼊⼝函数VS2010退出有⼀段时间了,我也充满好奇地使⽤了这个全新的IDE。新版IDE不仅更换了原来的LOGO,⽽且有着很棒的界⾯!VS2010退出有⼀段时间了,我也充满好奇地使⽤了这个全新的IDE。新版IDE不仅更换了原来的LOGO,⽽且有着很棒的界⾯!在VC++编程中,我随便选择了⼀个以前的程序准备编译,结果报错。⼀开始怀疑我⾃⼰的问题,于是写了⼀个最简单的程序,还是报错,如下:

好奇下,决定⽤微软⾃⼰的⽤例跑跑。于是新建了⼀个⼯程,并且选择Precompiled header,⽣成的⼯程如图:这时恍然⼤悟,原来是⼊⼝函数有问题。正在做茅塞顿开状,⼀个学长提醒我到,从VS2005,微软定义的⼊⼝函数就是_tmain了,听了我还不相信,因为⾃⼰从来都是⽤main在VS2008中通过编译的。后来在VS2008中⽣成⼯程,果然如学长所说。正在郁闷中,学长⼜提醒我可以设置⼯程的预编译项,于是⾃⼰试了试,果然成功了,在改了以后的设置中,VS2010也可以跑通了。

⽅法如下:*代表当前⼯程名

project -> properties ->(选择Configuration Properties,这个时候在顶部的Configuration选择Active(Debug),再到Configuration Properties中选择)C/C++ -> Precompiled Header -> Precompiled Header值改为Use(/Yu),OK了!

总结:VS2008及以前的配置中,默认都是选择了类似的配置,VS2008中是:Use Precompiled Header (/Yu)

笔者⽤的是VS2010 Beta 2。不知道是微软的开发⼈员忘记了这个设置(居然默认是空的),还是故意这样的,谁知道呢?

vs2010中怎么写个简单的C++程序?#includevoid main(void){count<<"hi";}在vs2010中编写以上程序报错:2 IntelliSense: identifier "count" is undefined c:usersshiechiandocumentsvisual studio 4 2运⾏结果:1>------ Build started: Project: test, Configuration: Debug Win32 ------1> 1>c:usersshiechiandocumentsvisual studio (4): error C2065: 'count' : undeclared identifie========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

还出现这个

这是什么原因?相关答复:cout写错了,同时还没有添加名字std(标准c++⾥是需要的,vc6与标准不符,后来新版的vs都与标准⼀样了)#includeusing namespace std;void main(void){cout<<"hi";}vs 2010中VC++的6个新特点⼀、Visual C++⼯程及其构建系统(⼀)MSBuild如今,Visual C++处理⽅案和项⽬都运⽤MSBuild执⾏构建,从⽽取代了原来的构建⼯具。关于其他的Visual Studio⾔语和项⽬类型,MSBuild提供了⼀样的灵敏性,可扩展性和基于XML的构建⽀持⼯具。为此,Visual C++项⽬⽂件如今也运⽤了盛⾏的XML⽂件格式,并具有.vcroj⽂件扩展名。另外,从前期版本的Visual Studio中提供的项⽬⽂件将被⾃动转换为新的⽂件格式。相关MSBuild⼯具的更多信息,请参见⽂章“MSBuild(Visual C++)”。(⼆)VC++⽬录如今,VC++⽬录配置位于两个地点。你可以运⽤项⽬属性页来配置每个项⽬对应的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_ENTRY_TYPE和PROP_ENTRY_TYPE_EX宏的现有功⽤。另外新添加的两个宏PROP_ENTRY_INTERFACE和PROP_ENTRY_INTERFACE_EX⽀持你添加⼀个有效的CLSID列表。开头⼀对新宏PROP_ENTRY_INTERFACE_CALLBACK和PROP_ENTRY_INTERFACE_CALLBACK_EX⽀持您指定⼀个回调函数,以确定某个CLSID能⽆法是有效的。(五)新库新引⼊的SafeInt库可以确保执⾏安全的算术运算,从⽽有效地防⽌了经常出现的整数溢出疑问。这个库还⽀持⽐拟不⼀样类型的整数。三、集成开发环境(IDE)(⼀)改进的错误智能感知⽀持在Visual Studio 2010中,集成开发环境(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 2010中重新引⼊了MFC类向导。如今,您可以在处理⽅案的任何地点调⽤类向导。MFC类向导准许您添加类、⾳讯和变量,⽽不⽤⼿动修正单个的代码⽂件。六、微软宏汇编器参考新引⼊的YMM数据类型⽀持AVX(英特尔⾼级⽮量扩展)指令中包括的256位的多媒体操作数。Visual C++延伸阅读Visual C++是微软公司开发的⼀个IDE(集成开发环境),换句话说,就是运⽤c++的⼀个开发平台.有些软件就是这个编出来的...另外尚有VB,VF.只是运⽤不⼀样⾔语...但是,VC++是Windows平台上的C++编程环境,学习VC要明⽩许多Windows平台的特征并且还要掌握MFC、ATL、COM等的知识,难度⽐拟⼤。Windows下编程须要明⽩Windows的⾳讯机制以及回调(callback)函数的原理;MFC是Win32API的包装类,须要了解⽂档视图类的结构,窗⼝类的结构,⾳讯流向等等;COM是代码共享的⼆进制规范,须要掌握其基本原理等等。 [转]vs2010 MSDN⽂档安装⽅法vs2010 MSDN⽂档安装⽅法⾸先我要承认,是我的错,误导了读者。不管是中⽂版还是英⽂版,前⾯提供的下载地址,都带有MSDN⽂档的,只是没有找到正确的安装⽅法,先⼊为主的以为在主安装界⾯没有提供⽂档安装功能,所以没有带MSDN⽂档。事实上,中⽂版,英⽂版的ISO都带了⽂档。安装⽅法:【⽅法⼀】1、vs2010的ISO光盘⽂件中,⾥⾯会有个ProductDocumentation⽂件夹,其实这个就是安装MSDN的⽂件夹了。(其它⽅法(同上):msdn是ProductDocumentation⽂件夹,原来叫msdnlibrary,现在叫helplibrary,基于web的,helplibrary⽆法独⽴安装,必须要先安装vs2010,安装好后打开,所有程序->vs2010->vs2010tools->manage help setting,选择install content from disk,然后选择光盘⾥⾯的ProductDocumentation⽂件夹下的,接下来看提⽰你就知道了)【⽅法⼆】在安装完成VS2010后,会在右下⾓有⼀个图标,内容是"INSTALL DOCUMENT",点击进去,会弹出⼀个框,这个框的右上⾓有⼀个SETTING,点击,出来⼀个选择框,选择本地安装,OFFLINE.退出来.在原来的框内把所有的都ADD,然后点击UPDATE到本地,即可安装.时间不是很长。值得注意的是,我先安装了英⽂版的VS2010,之后想安装中⽂版的帮助⽂档,是不⾏的。按照上⾯的⽅法,只能安装⼀个项⽬。⽽⽤英⽂版的光盘,则可以安装完全版的⽂档。当然,Help Library Manager也能在线下载/更新⽂档,如果带宽⾜够,选择在线下载也是⼀个好主意——保证最新、最全。注意1:第⼀次运⾏Help Library Manager是,会让你选择保存⽂档的本地位置。要慎重选择,⼀旦选择,就不能更改了。系统盘空间紧张的⽤户特别要注意。注意2:win7似乎对权限管理得⽐较严格,选择保存⽂档的本地路径,经常会提⽰没有权限,建议“以管理员⾝份”运⾏Help Library Manager。First look: Visual Studio 2010 Beta 1 shows some leg我个⼈⼀向认为微软的Visual Studio系列在.Net框架应⽤开发上⾸屈⼀指,在基于Windows主机C与C++的IDE中也极富竞争⼒。我对Visual Studio 2008的评价已经颇⾼,但也在⼏个⽅⾯抱怨了它的⼀些缺陷,尤其是在稍后发布的Silverlight2.0中,我认为后加⼊Visual Studio的Silverlight⼯具包中的XAML设计器只有预览⾯板,因此不能算是⼀个完全成熟的设计器。

显然微软对Visual Studio 2010 的期望极⼤,因此如果听见任何的抱怨⼀定感到难受。但我还是⼀定会有些抱怨的,这没办法,我总是从实际应⽤来考虑问题,虽然VS2010是近乎完美的作品。让我们从它的优点开始吧。

改进的⽤户界⾯:

Visual Studio 2010对⽤户界⾯(UI)做了很⼤改进,看起来⽐以前的Visual Studio 版本更⼲净,使⽤Windows Presentation Foundation(WPF)布局⽽不再使⽤Windows Forms(Windows窗体)布局。我喜欢这种⽅式,当然我的电脑拥有⼤容量的内存和⼀个⾮常好的显卡。我对⽤户界⾯的改进竖起⼤拇指。据说现在的⽤户界⾯还⽀持多台监视器,但我并没有亲⾃测试。

毫不奇怪,WPF设计器会⽐以前更顺畅。此外,你现在能够⽣成数据绑定的WPF控件,从DataSources窗⼝将项⽬直接拖动到设计器。更好的是,Silverlight的XAML设计器与WPF设计器实现了⽔平相当,因此在进⾏XAML设计时,你不再需要⿇烦的从Visual Studio 切换到ExpressionBlend了。

新的代码浏览功能是另⼀项成功。你不仅可以使⽤Ctrl与⿏标滚动来放⼤和缩⼩屏幕,还拥有了NavigateTo快捷⽅式(Ctrl加逗号)和CallHierarchy导航等新功能,使你的项⽬开发更为⽅便。

调试和TDD

VS2010在线程调试上得到了很⼤改善,得到了更多的多线程⽀持和并⾏处理能⼒,这是⾮常必要的。Toolboxes⼯具箱和IntelliSense智能感应现在可以对你的⽬标项⽬敏感,这样你就不必等到编译或运⾏时才会发现你使⽤的功能不被⽀持。

Visual Studio 从很早以前就开始⽀持测试驱动开发,但它在实际应⽤编写新的stub和同步IntelliSense时经常碰到问题。现在,你可以切换到consume-first模式,确保IntelliSense正常运⾏并且从中⽣成stub。

.Net语⾔

Visual Basic和C#语⾔都得到了很好的发展,⼆者现在⼏乎实现了功能均等。现在VisualBasic中已具有lambda表达式和隐性 linecontinuation,C#中简化了COM调⽤和动态语⾔⽀持。⼆者都拥有了⼀个新功能叫做typeequivalence,简化了不同版本中项⽬的封装,这在使⽤微软OfficeAPI编程时特别有⽤。

F#是⼀个基于ML和OCAML的功能性编程语⾔,它使⽤.Net框架并能够与其它.Net语⾔交互使⽤。F#从⼀个研究项⽬发展⽽来,很⾼兴看到它成为Visual Studio 2010的⼀部分。51CTO之前介绍过Visual Studio 2010中F#的⼀些资源 ,对于尝试最新版的F#有很⼤帮助。

在Visual Studio 2008中我经常受到半⽣不熟的JavaScript解析和IntelliSense的烦恼。已经数不清多少次VS2008⽤多余的步骤来“帮助”我完成代码。微软称VS2010“⼤⼤提⾼”了JavaScript解析速度“2⾄5倍”。考虑到以前的表现,实际上这并不能说有多么好,但有改善当然是值得欢迎的,⽽且事实上VS2010对JavaScript的⽀持很不错。

以前在从事⼤型VisualC++项⽬时,我经常不敢改变核⼼头⽂件。⽽现在VS2010在后台解析⽂件时显然⽐以前聪明得多了。

VS2010的C++编译器现在⽀持lambda表达式、右值引⽤(rvaluereferences)、编译时断⾔(compile- timeassertions)、表达式类型发现(expressiontypediscovery)和C++0X标准的⾃动类型deduction。另⼀条好消息是,VS2010的C++编译器有⼀种模式可以向后兼容Visual Studio 2008的⼯具和类库。这会给开发者的个⼈升级提供很⼤的⽅便,即使团队中有其他⼈还不想切换到VS2010。⽹络部署和并⾏编程 ⽹络部署从历史上就不算Visual Studio 的巨⼤优势。在Visual Studio 2008中我就常常发现⾃⼰会切换到FTP客户端做部署,⽽不是使⽤VS的部署⼯具。VS2010的⼀键发布功能很可能会改变这种状况,虽然我还没有勇⽓⽤它来发布站点。

对于我来说,VS2010最⼤的新特点是并⾏编程的进展。我曾经写过⼀本书有⼀部分专门讲并⾏编程,⽽我也⼀直在各种语⾔、框架以及类库中找寻并⾏编程的兴趣,包括JoeDuffy在微软的⼯作。我不敢说已经完全掌握了VS2010中的新的.Net框架的能⼒和本地C++对于任务和数据并⾏的⽀持,但已经看到的这些已经令我印象深刻。在CodePlex最近已经张贴了很多有趣的并⾏程序设计样例,我认为它们值得好好研究。

Beta版的bug和遗漏

虽然是beta版,我还是要挑出⼀些Visual Studio 2010的缺陷,虽然这显得有点不公平。我想让你在开始下载和测试前知道有什么可以期待,有什么⽆法期待。

⾸先,不要浪费时间寻找本地的MSDN库了。beta版没有任何本地的MSDN,它完全在线上。但我并不太在乎,因为如果我的⽹断了,实际上我也做不了什么了。

MVC⽬前还不⽀持,不论是智能设备还是.NetMicro框架。你可以下载Azure、Silverlight、IronRuby和 IronPython的⽀持。有关.NET MVC未被包含在Beta版中的原因,.NET开发团队在Beta版发布后做出了解答,详见51CTO之前这篇报导 。

如果你像我⼀样安装的是Windows7,那么Visual Studio 安装程序中内置的SQLServer安装程序将⽆法正常运⾏。当然你可以下载并分开安装SQL Server 2008 SP1,你可以正常的安装数据库的Express和Developer版本。有关SQL Server 2008的更多信息,可参考51CTO的SQL Server 2008深度应⽤ 专题。

在我个⼈对beta1的测试中,只遇到了⼀个漏洞,还没有得到解决。不知什么原因,在我安装了Silverlight2.0运⾏时和SDK之后,我⽆法调试Silverlight项⽬。我不确定这是64位的问题还是安装的问题,我希望这个问题将会在某个时候消失,也许是再安装了更新版本的 Silverlight⼯具之后。

⽆论如何,我期待着Visual Studio 2010中能够具有更多的add-on,我期待着下⼀个测试版。现在的Visual Studio 2010已经做得很好,我希望将来它的正式发布能够收获巨⼤的成功。

原⽂:First look: Visual Studio 2010 Beta 1 shows some leg作者:Martin Heller

⼀个C++⽼鸟眼中的 C++ VS Java⽤C++开发程序多年,⽤java写则较少。 C++和java都是很棒的语⾔,套⽤⼀句李连杰的话就是:

语⾔本⾝没有优劣之分,但程序员有强弱之别。

1、在内存管理⽅⾯

在这⽅⾯我更欣赏java,也认为这是java⽐C++更易⽤的重要原因。C++的⽤户⾃⼰管理内存和灵活的指针⽤法往往让⽤户为了⼀个内存问题⽽调试好⼏天。让⽤户⾃⼰释放内存使得⽤户必须⾮常⼩⼼,在程序有多个出⼝或指针被多个线程或被多个容器拥有的情况下,何时能安全的释放内存都必须⾮常谨慎的,⽽且还要保证在程序的各个出⼝都保证不内存泄露,这简直就是噩梦!智能指针能解决⼀些问题,但他带来的问题同样很多。java的⾃动垃圾收集简直就是⼀⼤解脱!

2、在多线程编程⽅⾯

多线程编程⼤⼤增加错误的随机性和破坏了接⼝的“抽象”,要在C++中设计好⼀个多线程程序往往不是件轻松的事情。所以我更欣赏linux/unix下以多进程为主的编程⼿法。java⽤“同步⽅法”来解决同步问题使得多线程异常简单(相对于C++),但在多线程⽅⾯我更喜欢C++,因为java的⽅法虽然简单,但太过⼩⼉科了,带来了两⼤弊端:

1)java采⽤了锁住整个对象的粗粒度多线程同步控制,⽽C++可以⽤更细粒度进⾏控制。java采⽤的⽅法是这样的:类A,类中有成员变量m1、m2,为了保护成员变量,将类A中所有访问这两个成员变量的成员函数设为synchronized,当某个线程T1调⽤了类A对象(记为obj)的synchronized⽅法时线程T1将锁住整个对象obj,此时若另外⼀个线程T2调⽤obj的synchronized⽅法(不⼀定和T1调⽤的那个⽅法是同⼀个⽅法)将阻塞(若T2调⽤了obj的⾮synchronized⽅法不会被阻塞),直到T1调⽤完synchronized⽅法为⽌。这种锁住整个对象的做法显然简化了实现,控制不够精细。例如,若T1调⽤了obj的⼀个只访问m1不访问m2的⽅法,由于T1锁住了整个对象obj,导致了T2若调⽤obj的只访问m2⽽不访问m1的⽅法也会阻塞,这显然不合理的。⽽且能造成重⼤的性能损失。

2)java采⽤锁住对象的⽅法来实现同步在很多情况下也不合理。因为要同步的资源往往不是类的私有成员。如我们要同步的资源是某个⽂件A,在C++情况下,给A配把“锁”即可,⽽java会锁住访问⽂件A的对象,这就要求所有线程都只能创建⼀个对象供所有线程共享使⽤,否则不同的对象就可以同时访问⽂件A了,同步防护失去了意义。这就带来很⼤的不便,需要程序员⾃⼰注意不要在别的线程中也new出⼀个对象来。

3、在⽹络编程⽅⾯

在这⽅⾯我更喜欢java,java不愧是靠⽹络起家,⽹络编程在java下特别简单。⽽⽤C++来写⽹络程序实在是太⿇烦了。

在 Visual Studio 2010 编写 C 程序打开VS2010 -> File -> New -> Project -> New Project -> Visual C++ -> Win32 -> Win32 Console Application.

输⼊⼯程名 -> 单击OK -> Next -> Finish,然后你会看到这样⼀个⽂件。0102// : Defines the entry point for the console application.//

0304

#include "stdafx.h"

0506

0708int _tmain(int argc, _TCHAR* argv[]){

0910return 0;}把它改成:12#include "stdafx.h"#include 34int _tmain(int argc, _TCHAR* argv[]){

56int a;printf("Hello NowaMagic!");

78scanf("%d", &a);return 0;

9}运⾏程序:

右击项⽬名 -> Property -> C/C++ -> Advanced -> Compile As,选择Compile as C Code(/TC),就可以了,所有的代码就会按照C标准去编译。

到此,我们就可以使⽤ Visual Studio 来编写 C 程序了。

2023年6月21日发(作者:)

最全VS2010初级教程学习⼿册⽬录

《Visual C++ 2010⼊门教程》系列⼆:安装、配置和⾸次使⽤VS2010作者:董波⽇期:2010.6.15写在前⾯

在我还在上学的时候,我选择了C++,最初我⽤VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有⼀本叫《Visual C++ 2005⼊门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运⾏,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能⼲什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧?学C++⽤C++也有⼏年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助⼀下那些和曾经的我⼀样困惑的朋友,特别是学⽣朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有⼈教,有的时候也⾛了不少弯路,甚⾄连调试也不会,也不知道可以通过看调⽤堆栈看调⽤次序,还⾃⼰慢慢的去搜索,好傻啊。接下来我会做⼀个《Visual C++ 2010⼊门教程》系列,⽤来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是⾝边还没有⼈能够指导⼀⼆的。内容主要涵盖在Windows下⾯使⽤C++进⾏开发的常见内容,Visual Studio 2010的使⽤,如何创建新项⽬,如何调试,如果配置项⽬属性等等,另外还会介绍Visual C++ 2010中新加如的⼀些内容,包括⼀些新的STL组建,⼀些新的语法⽀持等等。由于本⼈⽔平有限,其中难免有错误,希望⼤家谅解,如果⼤家有发现问题还请务必及时指出来,否则误导了他⼈我就罪不容恕了。注意,本教程⾮C++教程,不会教你C++,只会教你如何使⽤ Visual C++ 2010去练习去学习其它C++教材上⾯的程序。因此建议⼤家认真的去看其他的C++教程,在使⽤Visual C++ 2010实践的时候如果遇到问题可以到这⾥来参考。推荐《C++ Primer》、《C++程序设计语⾔》《Visual C++ 2008⼊门经典》。第⼆章 安装、配置和⾸次使⽤VS2010本章将帮助⼤家安装Visual C++ 2010,帮助⼤家做⼀些常见的配置,以及第⼀次使⽤它来写HelloWord程序。安装Visual C++ 2010是属于Visual Studio 2010的⼀部分,这个在前⼀章中已经讲解过,实际上Visual C++ 2010也有更多的⼦版本,正如Windows7有旗舰版、家庭⾼级版、家庭初级版⼀样。在上⼀章的下载地址中有两个版本可以选择,我选择的时候旗舰版,这个功能最全⾯。如果你下载完毕了,应该有⼀个ISO镜像⽂件,如果你是从我给的地址下载的,那么那个序列号已经被 替换成正版序列号,直接安装即可。下⾯是ISO⽂件截图:

这就是光盘镜像⽂件,我们有多种⽅式可以安装它,你可以把它烧录成光盘,也可以⽤虚拟光驱软件安装它,由于这个ISO已经被修改过了,你甚⾄可以直接解压它,然后运⾏⾥⾯的进⾏安装。这⾥我使⽤虚拟光驱进⾏说明,⾸先我假设你已经安装好了虚拟光驱软件DAEMON Tools Lite,如果你还没有安装,请去游侠补丁⽹下载,因为在那⾥你总是能找到最新的免费版本。接下来我们通过虚拟光驱加载刚才下载好的ISO镜像:

在弹出的对话框中选择我们下载好的ISO⽂件。这个时候,虚拟光驱⾥⾯已经替我们打开了ISO⽂件,有的机器可能会⾃动弹出安装提⽰,有的不会。如果⾃动弹出安装提⽰,那么直接通过即可,如果没有弹出,那么⽤资源管理器⽅式进⼊虚拟光驱点击即可开始安装。

由于我已经安装好了VS2010,所以接下来⽆法给⼤家截图了,我就直接⽤⽂字描述吧。当弹出VS2010安装程序之后点下⼀步,然后我们可能会看到 完全 最⼩ ⾃定义 这样的选项,我推荐⼤家选择⾃定义,因为只有这样我们才可以⾃定我们安装的⽬录。接下来会选择安装的组件。这个时候我们会看到⼤量的VS2010的组件,这⾥我们可以选择是否安装Basic是否安装C#等等,我在⽹上找到⼀些图⽚,虽然跟中⽂版2010不⼀样,⼤家⼤概的样⼦是⼀样的,⼤家就凑合着看看吧。下⾯是开始的界⾯,我们应该选择安装VS2010.

上⾯这个时候选择同意。然后安装包会开始搜集信息:

选择⽬录:

然后就是开始安装了,注意安装的时候可能需要重启⼀两次。

最后安装成功:

配置当安装成功之后,我们就可以开始使⽤了,这⾥我先教⼤家做⼀些常见的配置,当然⼤家也可以直接⽤默认的设置,我这样配置主要是为了⽅便。下⾯通过开始菜单来启动VS2010吧:

如果你是第⼀次开始,那么可能会让你选择默认的环境设置,我们要使⽤VC当然选择VC的配置:

出现下⾯的画⾯表⽰已经成功安装和运⾏了。这是起始页⾯,以后你会经常见到它。

注意,你可能会没有VAssistX这个菜单,因为这个是个外部⼯具,以后会给⼤家解释它的⽤处,现在暂时忽略。接下来让我们来做⼀些常见的设置。通过菜单⼯具》选项调出配置对话框,下⾯是⼀些常见的设置:调处⾏号,选择⽂本编辑器,所有语⾔,把⾏号打成勾。

如果你想调整字体或者颜⾊,那么可以在这⾥选择: 单击⼯具栏的空⽩区域,让我们把⽣成⼯具栏调出来:

这样我们就可以直接在⼯具栏上⾯选择编译项⽬、编译整个解决⽅案、运⾏程序和调试程序了。选择⽣成⼯具栏旁边的⼩三⾓形可以⾃定,我们还可以添加⼀些按钮:

单击⾃定义界⾯下⾯的添加按钮就可以添加新的按钮了,现在我们把开始执⾏(不调试)添加⼯具栏中:

以前经常有⼈问我为什么我的程序闪⼀下就没了,这就是因为它们把调试(F5,那个实⼼的三⾓形)当成了运⾏(不调试,Ctrl+F5,空⼼带尾巴的三⾓形)了。当然是⼀闪⽽过啦。关于调试以后说到。

HelloWorld.下⾯让我们⽤VC++ 2010也就是VC10来做⼀个控制台的HelloWorld程序吧。VC2010⾥⾯不能单独编译⼀个.cpp或者⼀个.c⽂件,这些⽂件必须依赖于某⼀个项⽬,因此我们必须创建⼀个项⽬。有很多种⽅法都可以创建项⽬,可以通过菜单:⽂件,新建,项⽬;也可以通过⼯具栏点击新建项⽬进⾏创建。这⾥我们点击起始页⾯上⾯的新建项⽬:

点击之后进⼊新建项⽬向导:

上⾯选择Win32控制台应⽤程序,名称中输⼊HelloWorld点确定,⾄于是否为解决⽅案创建⽬录我们暂时不管,那主要区别在于解决⽅案是否和项⽬⽂件在同⼀⽬录。

接下来进⼊创建页⾯,在Win32应⽤程序向导的第⼀个页⾯直接点下⼀步即可:

下个页⾯记得选择空项⽬,我们不需要预编译头:

点击完成。这时候⼀个空的项⽬编译成功了,我们不妨编译⼀些试试。点击刚才添加的⽣成⼯具栏的⽣成按钮:

这时候我们会遇到编译错误,为什么呢?因为我们还没有Main函数,对于⼀个C++项⽬来说,⼀定要有⼀个且仅有⼀个main函数(Windows程序需要WinMain,区别以后再讲),可以是隐式提供也可以是显式提供,⾄于区别以后会讲到。现在让我们记住这个错误,以后遇到这个错误的时候⼀定要想想,我们项⽬中是否有Main函数。注意这时候即使你托⼀个有Main函数的⽂件到VC10中进⾏编译也是没有意义的,因为那个⽂件并不是我们项⽬的⼀部分。

现在我们可以添加⼀个代码⽂件进来了,这个代码⽂件可以是已经存在的也可以是新建的,这⾥新建⼀个。右键单击项⽬名称,选择添加,新建项: 在向导中选择代码、C++⽂件(.cpp),名称输⼊Main,确定。

这时候已经成功添加了⼀个Main⽂件,注意添加新⽂件的时候要防⽌重名:

然后我们输⼊最简单的⼏⾏代码,然后编译它吧,编译⽅法和上⾯⼀样。

如果编译成功你会看到上⾯的画⾯,如果失败会有错误提⽰,那么你可以根据提⽰去修改项⽬配置或者代码。然后让我们⽤Ctrl+F5或者点那个空⼼三⾓形运⾏⼀下吧:

OK了,接下来你可以通过更改这个程序去练习C++教材上⾯的程序了。这⼀章的内容就是这么多了,下⼀章中我们将讨论以下内容:什么是C++?什么是编程等等。

// ----- 以下内容⽤于帮助搜索引擎搜索 000=--- //Help Tag: VC2010 VS2010 编译C++ Visual C++ 2010 编译C++ VC2010控制台程序

VS2010正式到⼿,说说⼏点试⽤体会如果你认真看了这篇⽂章,那么说明你⼀定是开发⼈员,⽽且是希望深⼊了解VS2010的程序开发⼈员,我也是刚开始使⽤,权且来说⼏点体会吧,说的不好希望理解。 我⼀直在⼀家软件公司做开发,没犯过⼤错也没特⽜逼的成绩,就是在⼤街上⼀抓⼀⼤把的普通开发⼈员中的⼀个。就在昨天发⽣了⼀件让同事都很不蛋定的事,⽼板每个⼈给我们多配个显⽰器,⼀向视抠门如⽣命的的铁公鸡怎么⼀下⼦拔了⼀地鸡⽑呢,环顾办公室才发现⼏乎每个开发⼈员桌⾯都多了⼀台新的24⼨的⼤显⽰器,⽐起以前⽤的17的⼤头显⽰器可感觉爽多了,本着不⽤⽩不⽤的原则跟这些万恶的资本家就不要客⽓了,开⽤!HOHO~~~这还只是开始哦! 更神的是,给⼤家发了⼀个最新的Visual Studio 2010,偶滴个神那,这是我到公司以来唯⼀的⼀次升级换代,VS2010正式版发⾏才不多久,使⽤⼏天还处在刚学习的阶段,有⼏点体会跟⼤家分享,不好希望见谅。 ⽐起现在⽤的VS6.2010有⼏个新特点值得关注: 1、⾃定义开始页。在Visual Studio 2010中引⼊了⾃定义开始,更加个性化其实也可以说帮助我们更⼤便捷化了我们的操作,进⼊更快了。

2、Visual Studio2010⽀持了⼤家都向往的多显⽰器,虽然说⽅便了我们,也让⽼板更赚钱了,在VS2010中多显⽰器的⽀持可以把多个窗⼝放置到不同的屏幕上(开始BS新配的那台显⽰器了),提⾼⼯作效率。

3、C++ IDE跟并⾏运算增强了,2010开始⽀持最新的C++标准外,在IDE以及MFC库也有改进,另外调整了对项⽬⽀持还有⽤户体验,具体的待⼤家去试验,并⾏运算就不多说了,做开发的⼀般都知道这个对程序影响有多⼤。

4、云计算,Visual Studio 2010将包括允许云应⽤在托管和内部⽹络之间移动的模板。在2010年测试版的系统中⼼云管理⼯具将提供⼀个统⼀的控制台,以相同的⽅式来管理场内和云的资产。

关于云计算就不多说了,如果要我说下去单这个问题我就能给⼤家说上半天。5、估计很多⼈都会喜欢对微软最新操作系统也是未来主流的WINDOWS7开发的⽀持,毕竟未来是属于win7的。Visual Studio2010中提供了很多⼯具来帮助开发者开发基于Windows7的应⽤程序,例如升级了MFC的库和头⽂件以全⾯⽀持Windows 7的界⾯元素,包括Ribbon界⾯,搜索功能甚⾄多点触摸特性的⽀持。

Ribbon界⾯的消息处理流程 还有其它的⼀些新功能需要在使⽤中慢慢摸索,如VS2010可以和VS2008并⾏安装在同个机器上,都不会影响到你现有的VS2008的开发,这些需要在使⽤中⼀步⼀步的体会,还有诸如对项⽬管理和结构框架的⽀持这些都不容⼩嘘,也是VS2010中不可或少的功能,对于开发⼈员来说特别⽅便。 以后如果⼯作不忙了在来说⼏点体会供⼤家学习分享。

VS2010 中使⽤main函数作为C++的⼊⼝函数VS2010退出有⼀段时间了,我也充满好奇地使⽤了这个全新的IDE。新版IDE不仅更换了原来的LOGO,⽽且有着很棒的界⾯!VS2010退出有⼀段时间了,我也充满好奇地使⽤了这个全新的IDE。新版IDE不仅更换了原来的LOGO,⽽且有着很棒的界⾯!在VC++编程中,我随便选择了⼀个以前的程序准备编译,结果报错。⼀开始怀疑我⾃⼰的问题,于是写了⼀个最简单的程序,还是报错,如下:

好奇下,决定⽤微软⾃⼰的⽤例跑跑。于是新建了⼀个⼯程,并且选择Precompiled header,⽣成的⼯程如图:这时恍然⼤悟,原来是⼊⼝函数有问题。正在做茅塞顿开状,⼀个学长提醒我到,从VS2005,微软定义的⼊⼝函数就是_tmain了,听了我还不相信,因为⾃⼰从来都是⽤main在VS2008中通过编译的。后来在VS2008中⽣成⼯程,果然如学长所说。正在郁闷中,学长⼜提醒我可以设置⼯程的预编译项,于是⾃⼰试了试,果然成功了,在改了以后的设置中,VS2010也可以跑通了。

⽅法如下:*代表当前⼯程名

project -> properties ->(选择Configuration Properties,这个时候在顶部的Configuration选择Active(Debug),再到Configuration Properties中选择)C/C++ -> Precompiled Header -> Precompiled Header值改为Use(/Yu),OK了!

总结:VS2008及以前的配置中,默认都是选择了类似的配置,VS2008中是:Use Precompiled Header (/Yu)

笔者⽤的是VS2010 Beta 2。不知道是微软的开发⼈员忘记了这个设置(居然默认是空的),还是故意这样的,谁知道呢?

vs2010中怎么写个简单的C++程序?#includevoid main(void){count<<"hi";}在vs2010中编写以上程序报错:2 IntelliSense: identifier "count" is undefined c:usersshiechiandocumentsvisual studio 4 2运⾏结果:1>------ Build started: Project: test, Configuration: Debug Win32 ------1> 1>c:usersshiechiandocumentsvisual studio (4): error C2065: 'count' : undeclared identifie========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

还出现这个

这是什么原因?相关答复:cout写错了,同时还没有添加名字std(标准c++⾥是需要的,vc6与标准不符,后来新版的vs都与标准⼀样了)#includeusing namespace std;void main(void){cout<<"hi";}vs 2010中VC++的6个新特点⼀、Visual C++⼯程及其构建系统(⼀)MSBuild如今,Visual C++处理⽅案和项⽬都运⽤MSBuild执⾏构建,从⽽取代了原来的构建⼯具。关于其他的Visual Studio⾔语和项⽬类型,MSBuild提供了⼀样的灵敏性,可扩展性和基于XML的构建⽀持⼯具。为此,Visual C++项⽬⽂件如今也运⽤了盛⾏的XML⽂件格式,并具有.vcroj⽂件扩展名。另外,从前期版本的Visual Studio中提供的项⽬⽂件将被⾃动转换为新的⽂件格式。相关MSBuild⼯具的更多信息,请参见⽂章“MSBuild(Visual C++)”。(⼆)VC++⽬录如今,VC++⽬录配置位于两个地点。你可以运⽤项⽬属性页来配置每个项⽬对应的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_ENTRY_TYPE和PROP_ENTRY_TYPE_EX宏的现有功⽤。另外新添加的两个宏PROP_ENTRY_INTERFACE和PROP_ENTRY_INTERFACE_EX⽀持你添加⼀个有效的CLSID列表。开头⼀对新宏PROP_ENTRY_INTERFACE_CALLBACK和PROP_ENTRY_INTERFACE_CALLBACK_EX⽀持您指定⼀个回调函数,以确定某个CLSID能⽆法是有效的。(五)新库新引⼊的SafeInt库可以确保执⾏安全的算术运算,从⽽有效地防⽌了经常出现的整数溢出疑问。这个库还⽀持⽐拟不⼀样类型的整数。三、集成开发环境(IDE)(⼀)改进的错误智能感知⽀持在Visual Studio 2010中,集成开发环境(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 2010中重新引⼊了MFC类向导。如今,您可以在处理⽅案的任何地点调⽤类向导。MFC类向导准许您添加类、⾳讯和变量,⽽不⽤⼿动修正单个的代码⽂件。六、微软宏汇编器参考新引⼊的YMM数据类型⽀持AVX(英特尔⾼级⽮量扩展)指令中包括的256位的多媒体操作数。Visual C++延伸阅读Visual C++是微软公司开发的⼀个IDE(集成开发环境),换句话说,就是运⽤c++的⼀个开发平台.有些软件就是这个编出来的...另外尚有VB,VF.只是运⽤不⼀样⾔语...但是,VC++是Windows平台上的C++编程环境,学习VC要明⽩许多Windows平台的特征并且还要掌握MFC、ATL、COM等的知识,难度⽐拟⼤。Windows下编程须要明⽩Windows的⾳讯机制以及回调(callback)函数的原理;MFC是Win32API的包装类,须要了解⽂档视图类的结构,窗⼝类的结构,⾳讯流向等等;COM是代码共享的⼆进制规范,须要掌握其基本原理等等。 [转]vs2010 MSDN⽂档安装⽅法vs2010 MSDN⽂档安装⽅法⾸先我要承认,是我的错,误导了读者。不管是中⽂版还是英⽂版,前⾯提供的下载地址,都带有MSDN⽂档的,只是没有找到正确的安装⽅法,先⼊为主的以为在主安装界⾯没有提供⽂档安装功能,所以没有带MSDN⽂档。事实上,中⽂版,英⽂版的ISO都带了⽂档。安装⽅法:【⽅法⼀】1、vs2010的ISO光盘⽂件中,⾥⾯会有个ProductDocumentation⽂件夹,其实这个就是安装MSDN的⽂件夹了。(其它⽅法(同上):msdn是ProductDocumentation⽂件夹,原来叫msdnlibrary,现在叫helplibrary,基于web的,helplibrary⽆法独⽴安装,必须要先安装vs2010,安装好后打开,所有程序->vs2010->vs2010tools->manage help setting,选择install content from disk,然后选择光盘⾥⾯的ProductDocumentation⽂件夹下的,接下来看提⽰你就知道了)【⽅法⼆】在安装完成VS2010后,会在右下⾓有⼀个图标,内容是"INSTALL DOCUMENT",点击进去,会弹出⼀个框,这个框的右上⾓有⼀个SETTING,点击,出来⼀个选择框,选择本地安装,OFFLINE.退出来.在原来的框内把所有的都ADD,然后点击UPDATE到本地,即可安装.时间不是很长。值得注意的是,我先安装了英⽂版的VS2010,之后想安装中⽂版的帮助⽂档,是不⾏的。按照上⾯的⽅法,只能安装⼀个项⽬。⽽⽤英⽂版的光盘,则可以安装完全版的⽂档。当然,Help Library Manager也能在线下载/更新⽂档,如果带宽⾜够,选择在线下载也是⼀个好主意——保证最新、最全。注意1:第⼀次运⾏Help Library Manager是,会让你选择保存⽂档的本地位置。要慎重选择,⼀旦选择,就不能更改了。系统盘空间紧张的⽤户特别要注意。注意2:win7似乎对权限管理得⽐较严格,选择保存⽂档的本地路径,经常会提⽰没有权限,建议“以管理员⾝份”运⾏Help Library Manager。First look: Visual Studio 2010 Beta 1 shows some leg我个⼈⼀向认为微软的Visual Studio系列在.Net框架应⽤开发上⾸屈⼀指,在基于Windows主机C与C++的IDE中也极富竞争⼒。我对Visual Studio 2008的评价已经颇⾼,但也在⼏个⽅⾯抱怨了它的⼀些缺陷,尤其是在稍后发布的Silverlight2.0中,我认为后加⼊Visual Studio的Silverlight⼯具包中的XAML设计器只有预览⾯板,因此不能算是⼀个完全成熟的设计器。

显然微软对Visual Studio 2010 的期望极⼤,因此如果听见任何的抱怨⼀定感到难受。但我还是⼀定会有些抱怨的,这没办法,我总是从实际应⽤来考虑问题,虽然VS2010是近乎完美的作品。让我们从它的优点开始吧。

改进的⽤户界⾯:

Visual Studio 2010对⽤户界⾯(UI)做了很⼤改进,看起来⽐以前的Visual Studio 版本更⼲净,使⽤Windows Presentation Foundation(WPF)布局⽽不再使⽤Windows Forms(Windows窗体)布局。我喜欢这种⽅式,当然我的电脑拥有⼤容量的内存和⼀个⾮常好的显卡。我对⽤户界⾯的改进竖起⼤拇指。据说现在的⽤户界⾯还⽀持多台监视器,但我并没有亲⾃测试。

毫不奇怪,WPF设计器会⽐以前更顺畅。此外,你现在能够⽣成数据绑定的WPF控件,从DataSources窗⼝将项⽬直接拖动到设计器。更好的是,Silverlight的XAML设计器与WPF设计器实现了⽔平相当,因此在进⾏XAML设计时,你不再需要⿇烦的从Visual Studio 切换到ExpressionBlend了。

新的代码浏览功能是另⼀项成功。你不仅可以使⽤Ctrl与⿏标滚动来放⼤和缩⼩屏幕,还拥有了NavigateTo快捷⽅式(Ctrl加逗号)和CallHierarchy导航等新功能,使你的项⽬开发更为⽅便。

调试和TDD

VS2010在线程调试上得到了很⼤改善,得到了更多的多线程⽀持和并⾏处理能⼒,这是⾮常必要的。Toolboxes⼯具箱和IntelliSense智能感应现在可以对你的⽬标项⽬敏感,这样你就不必等到编译或运⾏时才会发现你使⽤的功能不被⽀持。

Visual Studio 从很早以前就开始⽀持测试驱动开发,但它在实际应⽤编写新的stub和同步IntelliSense时经常碰到问题。现在,你可以切换到consume-first模式,确保IntelliSense正常运⾏并且从中⽣成stub。

.Net语⾔

Visual Basic和C#语⾔都得到了很好的发展,⼆者现在⼏乎实现了功能均等。现在VisualBasic中已具有lambda表达式和隐性 linecontinuation,C#中简化了COM调⽤和动态语⾔⽀持。⼆者都拥有了⼀个新功能叫做typeequivalence,简化了不同版本中项⽬的封装,这在使⽤微软OfficeAPI编程时特别有⽤。

F#是⼀个基于ML和OCAML的功能性编程语⾔,它使⽤.Net框架并能够与其它.Net语⾔交互使⽤。F#从⼀个研究项⽬发展⽽来,很⾼兴看到它成为Visual Studio 2010的⼀部分。51CTO之前介绍过Visual Studio 2010中F#的⼀些资源 ,对于尝试最新版的F#有很⼤帮助。

在Visual Studio 2008中我经常受到半⽣不熟的JavaScript解析和IntelliSense的烦恼。已经数不清多少次VS2008⽤多余的步骤来“帮助”我完成代码。微软称VS2010“⼤⼤提⾼”了JavaScript解析速度“2⾄5倍”。考虑到以前的表现,实际上这并不能说有多么好,但有改善当然是值得欢迎的,⽽且事实上VS2010对JavaScript的⽀持很不错。

以前在从事⼤型VisualC++项⽬时,我经常不敢改变核⼼头⽂件。⽽现在VS2010在后台解析⽂件时显然⽐以前聪明得多了。

VS2010的C++编译器现在⽀持lambda表达式、右值引⽤(rvaluereferences)、编译时断⾔(compile- timeassertions)、表达式类型发现(expressiontypediscovery)和C++0X标准的⾃动类型deduction。另⼀条好消息是,VS2010的C++编译器有⼀种模式可以向后兼容Visual Studio 2008的⼯具和类库。这会给开发者的个⼈升级提供很⼤的⽅便,即使团队中有其他⼈还不想切换到VS2010。⽹络部署和并⾏编程 ⽹络部署从历史上就不算Visual Studio 的巨⼤优势。在Visual Studio 2008中我就常常发现⾃⼰会切换到FTP客户端做部署,⽽不是使⽤VS的部署⼯具。VS2010的⼀键发布功能很可能会改变这种状况,虽然我还没有勇⽓⽤它来发布站点。

对于我来说,VS2010最⼤的新特点是并⾏编程的进展。我曾经写过⼀本书有⼀部分专门讲并⾏编程,⽽我也⼀直在各种语⾔、框架以及类库中找寻并⾏编程的兴趣,包括JoeDuffy在微软的⼯作。我不敢说已经完全掌握了VS2010中的新的.Net框架的能⼒和本地C++对于任务和数据并⾏的⽀持,但已经看到的这些已经令我印象深刻。在CodePlex最近已经张贴了很多有趣的并⾏程序设计样例,我认为它们值得好好研究。

Beta版的bug和遗漏

虽然是beta版,我还是要挑出⼀些Visual Studio 2010的缺陷,虽然这显得有点不公平。我想让你在开始下载和测试前知道有什么可以期待,有什么⽆法期待。

⾸先,不要浪费时间寻找本地的MSDN库了。beta版没有任何本地的MSDN,它完全在线上。但我并不太在乎,因为如果我的⽹断了,实际上我也做不了什么了。

MVC⽬前还不⽀持,不论是智能设备还是.NetMicro框架。你可以下载Azure、Silverlight、IronRuby和 IronPython的⽀持。有关.NET MVC未被包含在Beta版中的原因,.NET开发团队在Beta版发布后做出了解答,详见51CTO之前这篇报导 。

如果你像我⼀样安装的是Windows7,那么Visual Studio 安装程序中内置的SQLServer安装程序将⽆法正常运⾏。当然你可以下载并分开安装SQL Server 2008 SP1,你可以正常的安装数据库的Express和Developer版本。有关SQL Server 2008的更多信息,可参考51CTO的SQL Server 2008深度应⽤ 专题。

在我个⼈对beta1的测试中,只遇到了⼀个漏洞,还没有得到解决。不知什么原因,在我安装了Silverlight2.0运⾏时和SDK之后,我⽆法调试Silverlight项⽬。我不确定这是64位的问题还是安装的问题,我希望这个问题将会在某个时候消失,也许是再安装了更新版本的 Silverlight⼯具之后。

⽆论如何,我期待着Visual Studio 2010中能够具有更多的add-on,我期待着下⼀个测试版。现在的Visual Studio 2010已经做得很好,我希望将来它的正式发布能够收获巨⼤的成功。

原⽂:First look: Visual Studio 2010 Beta 1 shows some leg作者:Martin Heller

⼀个C++⽼鸟眼中的 C++ VS Java⽤C++开发程序多年,⽤java写则较少。 C++和java都是很棒的语⾔,套⽤⼀句李连杰的话就是:

语⾔本⾝没有优劣之分,但程序员有强弱之别。

1、在内存管理⽅⾯

在这⽅⾯我更欣赏java,也认为这是java⽐C++更易⽤的重要原因。C++的⽤户⾃⼰管理内存和灵活的指针⽤法往往让⽤户为了⼀个内存问题⽽调试好⼏天。让⽤户⾃⼰释放内存使得⽤户必须⾮常⼩⼼,在程序有多个出⼝或指针被多个线程或被多个容器拥有的情况下,何时能安全的释放内存都必须⾮常谨慎的,⽽且还要保证在程序的各个出⼝都保证不内存泄露,这简直就是噩梦!智能指针能解决⼀些问题,但他带来的问题同样很多。java的⾃动垃圾收集简直就是⼀⼤解脱!

2、在多线程编程⽅⾯

多线程编程⼤⼤增加错误的随机性和破坏了接⼝的“抽象”,要在C++中设计好⼀个多线程程序往往不是件轻松的事情。所以我更欣赏linux/unix下以多进程为主的编程⼿法。java⽤“同步⽅法”来解决同步问题使得多线程异常简单(相对于C++),但在多线程⽅⾯我更喜欢C++,因为java的⽅法虽然简单,但太过⼩⼉科了,带来了两⼤弊端:

1)java采⽤了锁住整个对象的粗粒度多线程同步控制,⽽C++可以⽤更细粒度进⾏控制。java采⽤的⽅法是这样的:类A,类中有成员变量m1、m2,为了保护成员变量,将类A中所有访问这两个成员变量的成员函数设为synchronized,当某个线程T1调⽤了类A对象(记为obj)的synchronized⽅法时线程T1将锁住整个对象obj,此时若另外⼀个线程T2调⽤obj的synchronized⽅法(不⼀定和T1调⽤的那个⽅法是同⼀个⽅法)将阻塞(若T2调⽤了obj的⾮synchronized⽅法不会被阻塞),直到T1调⽤完synchronized⽅法为⽌。这种锁住整个对象的做法显然简化了实现,控制不够精细。例如,若T1调⽤了obj的⼀个只访问m1不访问m2的⽅法,由于T1锁住了整个对象obj,导致了T2若调⽤obj的只访问m2⽽不访问m1的⽅法也会阻塞,这显然不合理的。⽽且能造成重⼤的性能损失。

2)java采⽤锁住对象的⽅法来实现同步在很多情况下也不合理。因为要同步的资源往往不是类的私有成员。如我们要同步的资源是某个⽂件A,在C++情况下,给A配把“锁”即可,⽽java会锁住访问⽂件A的对象,这就要求所有线程都只能创建⼀个对象供所有线程共享使⽤,否则不同的对象就可以同时访问⽂件A了,同步防护失去了意义。这就带来很⼤的不便,需要程序员⾃⼰注意不要在别的线程中也new出⼀个对象来。

3、在⽹络编程⽅⾯

在这⽅⾯我更喜欢java,java不愧是靠⽹络起家,⽹络编程在java下特别简单。⽽⽤C++来写⽹络程序实在是太⿇烦了。

在 Visual Studio 2010 编写 C 程序打开VS2010 -> File -> New -> Project -> New Project -> Visual C++ -> Win32 -> Win32 Console Application.

输⼊⼯程名 -> 单击OK -> Next -> Finish,然后你会看到这样⼀个⽂件。0102// : Defines the entry point for the console application.//

0304

#include "stdafx.h"

0506

0708int _tmain(int argc, _TCHAR* argv[]){

0910return 0;}把它改成:12#include "stdafx.h"#include 34int _tmain(int argc, _TCHAR* argv[]){

56int a;printf("Hello NowaMagic!");

78scanf("%d", &a);return 0;

9}运⾏程序:

右击项⽬名 -> Property -> C/C++ -> Advanced -> Compile As,选择Compile as C Code(/TC),就可以了,所有的代码就会按照C标准去编译。

到此,我们就可以使⽤ Visual Studio 来编写 C 程序了。