找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4455|回复: 0
打印 上一主题 下一主题
收起左侧

Visual C++ 2010入门教程(开发环境搭建,创建调试配置项目)

[复制链接]
跳转到指定楼层
楼主
  我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《VisualC++2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧?
学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友, 特别是学生朋友, 告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序, 还自己慢慢的去搜索,好傻啊。

  接下来我会做一个《VisualC++2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows下面使用C++进行开发的常见内容,VisualStudio2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍VisualC++2010中新加入的一些内容,包括一些新的STL组建,一些新的语法支持等等 。

由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。

注意,本教程非 C++教程,不会教你C++,只会教你如何使用 Visual C++ 2010 去练习去学习其它 C++教材上面的程序。因此建议大家认真的去看其他的 C++教程,在使用 Visual C++ 2010 实践的时候如果遇到问题可以到这里来参考。推荐《C++Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。

第一章: 关于 Visual Studio、VC 和 C++的那些事

首先,这三个东西有什么区别呢?VC 和 C++是相同的吗,有什么区别呢?我刚开始学 C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。

Visual Studio,我们一般都简称为 VS,VC 全称是 Visual C++,C++就不用解释了吧?Visual Studio 其实是微软开发的一套工具集,它由各种各样的工具组成,这就好像 Office 2007 是由 Word 2007、Excel 2007、Access2007 等等组成的一个道理。其中 Visual C++就是 Visual Studio 的一个重要的组成部分。Visual Studio 可以用于生成 Web 应用程序,也可以生成桌面应用程序,在 Visual Studio 下面,除了 VC,还有 Visual C#,Visual Basic,过去还有 Visual J#,现在还有 Visual F#等等组件工具,使用这些工具你可以使用 C++语言、C#语言或者 Basic 语言(微软改进版)进行开发。这就好比桌上放着刀、叉、筷子,你可以用它们来吃饭,无论你用什么工具都可以,因为它们都是餐具的一种。

VC,全称是 Visual C++,它只是一个工具而已。C++是一门和 C、Basic、C#、Java 一个概念的东西,它是一门语言,这个概念就同汉语、英语、法语之间的关系一样。语言可以不同,他们有的复杂有的精简,比如汉语,我个人认为这是这个星球上最复杂的语言;又比如电影《阿凡达》中外星人使用的语言,不过 100 多个单词而已。当然,语言并没有高低贵贱之分,而对语言掌握的好不好,说的好不好是有高下之别的。

一个语言都有哪些要素呢?语法就是其中一个重要的方面,比如你要对你所喜欢的人表达爱慕之情,那么你应该说“我爱你”,你不能说“你爱我”,因为这搞错了主谓宾关系,因此我们通常都需要按照一定的规矩和原则表达才会让别人正确理解我们真正的含义。在我们的汉语中有一些成语,它们通常都比较简单短小,但是却能表达非常强烈的感情,而且效果非常好。比如你想骂一个坏人“你实在是太变态了,这种事情都干得出来。”你可以这样说:“你也太禽兽不如了!”对于编程的语言来说,其实也是有成语的,在我看来,这就是库函数。通常我们在编程的时候都推荐选择库函数,因为它通常会比较快一些。

一直以来都有不少人混淆 Visual C++和 Visual Studio,其实最初Visual C++发布的时候还没有 Visual Studio 这个东西,Visual C++是一个独立的开发工具,与 Visual Basic 等并列,最后微软将它们整合在一起组成了 VisualStudio。Visual C++从发布起到现在已经有 10 个大版本了,我们这里介绍的Visual C++ 2010 就是 Visual C++ 10,简称 VC10。上朔 10 多年,Visual C++ 6.0发布了,这个被称为史上最经典的 VC,现在有很多企业还在用它,大量的教材基于这个版本的 VC 来写的。然而实际上 VC6 并没有想象中的那么美好,孱弱的IDE,不完善的 STL 等等让它越来越不适应时代的发展,同时由于后来的版本和百度文库它的差别越来越大,让很多习惯于 VC6 教材的人在新版本上无所适从。VC6 走向历史的终结点其实是必然的,只在于时间问题罢了,况且大部分人都有追求最新的“嗜好”,所以这里也选择最新版的 VC 来做入门教程。



第二章 安装、配置和首次使用 VS2010

本章将帮助大家安装 Visual C++ 2010,帮助大家做一些常见的配置,以及第一次使用它来写 HelloWord 程序。

安装
Visual C++ 2010 是属于 Visual Studio 2010 的一部分,这个在前一章中已经讲解过,实际上 Visual C++ 2010 也有更多的子版本,正如 Windows7 有旗舰版、家庭高级版、家庭初级版一样。在上一章的下载地址中有两个版本可以选择,我选择的时候旗舰版,这个功能最全面。

如果你下载完毕了,应该有一个 ISO 镜像文件,如果你是从我给的地址下载的,那么那个序列号已经被 替换成正版序列号,直接安装即可。下面是 ISO 文件截图:


以下内容来自节选:


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

现在我们可以添加一个代码文件进来了,这个代码文件可以是已经存在的也可以是新建的,这里新建一个。右键单击项目名称,选择添加,新建项:


两个选项卡,局部变量和自动变量,它们都负责显示一些当前断住状态下的变量的值,注意,这些只有在程序中断的时候才有意义。自动变量选项卡并非指 auto 变量,而是指 VS帮我们猜想我们可能感兴趣的一些变量的值,或者函数返回值,而局部变量基本上就是本过程的一些变量的值了。
注意,这些选项卡不仅仅可以用于查看,甚至可以用于你临时修改它们的值,方法就是双击值就可以了,如下图所示:


这里我检查了当前语言字符串的设置。注意并非什么变量都可以检视,必须是调试器可以为我们推断出来的才行,即调试器知道它的地址是什么。如上图所示有一个特殊的用法$err,hr 这个是 VS 特别的,它的意义相当于让调试器帮你获取 GetLastError 的值,这在Windows 编程的时候非常有用。
对于一些指针类型的变量我们还可以在监视里面对它做强制转型,比如你的函数传递一个 void* p 进来,但是你知道这次你传递的是一个 Data 结构体的指针,而调试器是无法知道这个 p 指向的是 Data,所以你可以在监视中输入(Data*)p。这样调试器会自动帮我们把他当做 Data 结构体的指针来识别。

调用堆栈
调试过程中调用堆栈实在是太重要了,因为它指出了你的程序是正在处于什么状态,是谁调用了谁:


当我们的程序失去响应的时候我们不妨尝试点击调试窗口上面的暂停按钮:如果中断(暂停)成功那么我们会看到死锁或者死循环的调用堆栈了。

断言(assert)
assert 大家应该很熟悉了吧,这是最直接提供错误信息的方法了。特别的,当我们在调试的时候,调试器会帮助我们定位到断言触发的地方。

暂时就想到这么多,如果您还有其它好 Case,一定不要忘了要同大家分享。
转眼间毕业一年了,感触良多。每当我情绪低落的时候,我就看苏珊大妈的视频,因为苏珊大妈是我的偶像,因为她告诉我有梦想就一定要坚持,当你具备了成功的基础的时候,梦想就会慢慢的实现。

完整的pdf格式文档51黑下载地址(共73页):
Microsoft_Visual_Studio_C _2010入门教程(修订版).pdf (7.36 MB, 下载次数: 41)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表