本节书摘来自异步社区出版社《易学C++(第2版)》一书中的第2章,第2.2节,作者:潘嘉杰  ,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 如何创建一个程序

进入Visual Studio 2012 Express版之后,可以看到整个开发环境的界面,如图2.2所示。


在菜单栏上有11个下拉式菜单(其中“项目“菜单和“生成”菜单要在打开项目之后才会出现),分别如下。

(1)文件菜单:实现新建、打开、保存项目或源代码以及退出等功能。

(2)编辑菜单:实现撤销、重做、查找、替换等常用功能。

(3)查看菜单:实现显示区域的选择功能。

(4)项目菜单:实现项目相关的设置、添加资源文件等功能。

(5)生成菜单:实现程序的编译、生成等功能。

(6)调试菜单:实现程序的运行、调试等功能。

(7)团队菜单:连接到团队服务器实现协同开发。

(8)工具菜单:提供管理、调试、数据库连接等辅助工具。

(9)测试菜单:提供程序的测试设置和自动测试等功能。

(10)窗口菜单:实现窗口管理功能。

(11)帮助菜单:提供帮助信息。

在新建程序之前,需要先介绍一下项目③(Project)的概念。类似于造房子需要图纸、建筑材料和建筑工具一样,设计程序也需要各种各样的东西,如程序代码、头文件或一些额外的资源,这些东西都是放在一个项目里的。项目能够协调组织好这些文件和资源,使得设计更为有序,查找更为方便。如果不创建项目,那么将会失去很多管理功能,多文件的程序会编译失败,并且有可能找不到对应文件。

小提示
 

每一个项目只能对应一个程序。如果编写好一个程序之后,想再另外编写一个程序,应该新建另一个项目,否则两个程序都可能会无法编译运行。
此外,在Visual Studio 2003以后的版本中,都有了解决方案这个概念。它是一组多个项目的集合,可以认为是一个“更大的项目”。对于初学者而言,可以暂时不使用该功能。

那么,如何新建一个程序呢?首先单击“文件”菜单,选择“新建项目”,可以看到“新建项目”的对话框,如图2.3所示。


在左侧的模板中,选择Visual C++;在右侧的项目类型中,选择“Win32控制台应用程序”。在下方填写名称并取消“为解决方案创建目录”前面的勾,选定该项目的保存位置,然后单击“确定”按钮。

接下来会出现Win32应用程序向导,其中需要设置的是应用程序类型和附加选项,如图2.4所示。


图2.4 Win32应用程序向导

此时新项目已经建立好,可以发现Visual Studio的界面和启动时发生了一些变化,如图2.5所示。

在右侧的解决方案资源管理器中可以看到4个像文件夹形状的图标,分别是外部依赖项、源文件、头文件和资源文件。外部依赖项和头文件的概念将在本书第11章中再作详细介绍。源文件主要用于存放程序的代码,这些文件的扩展名为cpp;头文件主要用于存放一些预先定义好的程序内容,扩展名为h;资源文件一般是存放运行该程序所必需的资源,例如图像、文本等类型的文件。要注意,这里的“文件夹结构”并不是磁盘上的文件夹结构,而只是这些文件在该项目中的分类。所以,如果你没有自行创建过这些文件夹,那么在磁盘上是无法找到它们的。

接下来需要向空的项目中添加代码文件。在右上侧的“解决方案资源管理器”中,右击“源文件”,选择添加,单击“新建项”,会出现添加新项的对话框,如图2.6和图2.7所示。


图2.6 解决方案资源管理器


图2.7 添加新项

在右侧的文件类型中,选择“C++文件(.cpp)”,并填写文件名main.cpp。单击“添加”之后,就能发现在解决方案资源管理器中多了一个文件,并且该文件已经打开,供用户输入程序代码。在右侧文本框内输入以下代码。

程序2.1 自己编写的Hello,World

#include <iostream>
using namespace std;
int main()
{cout<<"Hello World!"; //输出Hello Worldreturn 0;
}

小提示
 

程序2.1中的大括号{}不能遗漏,否则将无法通过编译。无论何时,程序中的大括号应该是能够配对的。
接下来要介绍如何让设计好的程序运行起来。单击“生成”菜单,再单击“编译”(或使用快捷键Ctrl+F7)。所谓编译,就是用编译器软件将我们比较容易掌握的高级语言翻译成计算机可以识别的低级语言。如果没有经过编译(或解释),高级语言的程序代码是无法被执行的。

编译的结果可以在“输出”窗口中看到,输出窗口默认位置为屏幕下方,如图2.8所示。如果编译正确,那么就会显示“成功1个,失败0个”,表示没有任何错误或警告。如果编译错误,则会提示在哪一行的什么位置可能发生了什么错误,相关内容会在本书第11章介绍。


图2.8 编译结果

完成编译后,还要再单击“生成”菜单,单击“生成解决方案”(或使用快捷键F7)。在这个过程中,会将多个源文件的程序模块都“拼装”起来。当一个程序规模比较大的时候,必须要生成解决方案后才能正常运行。生成解决方案的结果也能够在“输出”窗口中看到。

最后单击“调试”菜单里的“开始执行(不调试)”,就能运行程序并查看结果了,如图2.9所示。


图2.9 程序运行结果 

小提示
 

1.在编写某些程序的时候会发现程序能正常编译,但是只有第一次连接是正常的。以后的几次连接均报告“error LNK1104: 无法打开文件……”。这可能是程序运行之后没有关闭造成的。请把所有正在运行的项目名.exe程序关闭,然后再尝试重新编译和连接。

2.如果在“调试”菜单里单击了“启动调试”,程序的运行会一闪而过。这是因为该选项是专门用于调试的,如果没有设置调试的断点,则程序会在完成运行后直接关闭。为了便于观察程序的运行结果,可以选择“开始执行(不调试)”选项,或使用快捷键Ctrl+F5。
在使用熟练之后,会发现当单击“调试”菜单里的“启动调试”或“开始执行(不调试)”时,如果程序代码被修改过需要重新编译生成,则Visual Studio会自动提醒用户是否要重新生成,如图2.10所示。


图2.10 自动提示重新生成

学会如何编译、生成和运行程序之后,我们来分析一下程序2.2中每个语句的含义。

#include <iostream>
包含输入输出流头文件,使得程序具有输入输出功能。通常把这种包含操作称为“预处理头文件”。

using namespace std;
使用命名空间,暂时认为是一种定式(该内容将在第11章中介绍)。

int main()
主函数,是每个程序开始运行的起点,每个程序只能有并且必须有一个主函数。在没有系统地介绍函数之前,也只能认为这是一种定式。

cout <<"Hello World!"; //输出Hello World
这个cout(念C-Out)实现了在屏幕上输出内容的功能。“<<”称为插入操作符,用于输出内容。在Hello World!两端加上双引号表示它是一个字符串,是一个整体。

而在代码中键入“//”后的字符都会变成绿色,而且无论这些字符是什么,对程序的运行结果都不会产生影响。这些绿色的字符叫做注释(Annotation),程序员用它来记录程序的相关文字信息,或记载某一段程序的含义,方便自己回忆或其他人理解编程思路。

小提示
 

1.并不是说注释越多越好。在那些很简单的、显而易见的语句后加上注释便显得画蛇添足了。尽管注释允许占用多行,还是应点到为止,从简为宜。

2.在Visual Studio中,注释的颜色默认为绿色。但是,该颜色通常可以在集成开发环境中进行设置,也可能因不同的集成开发环境而发生变化。
写注释是一种好习惯,能够及时把自己当时的思路记录下来。“//”称为单行注释符,当注释要占用多行时,可以用“/”表示注释的开始,用“/”表示注释的结束。

return 0;
主函数的返回值,表示程序运行的结束。暂时也认为是一种定式。

试试看
 

1.如果去掉第一行的#include ,该程序能否正常运行?

2.如果去掉字符串两端的双引号,是否还能输出这些字符?

3.如果去掉cout语句后的分号,编译时会出现什么错误提示?

4.试试cout <<"3+4=" <<3+4;会是什么结果。
通过这个程序可以总结出一个简单的C++程序代码结构。

预处理头文件
使用命名空间
主函数
{语句1;//注释…………/*注释……*/语句n;
}

小提示
 

1.在某些计算机中安装了操作系统的更新之后,会导致Visual Studio 2012无法打开C++的项目。目前已经证实这是微软.NET Framework更新程序的一个潜在缺陷,可以通过安装Visual Studio 2012 更新(KB2781514)解决这个问题。

参考地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=36020

2.如果将Visual Studio 2012生成的可执行文件直接复制到某些Windows系统的计算机中,运行时会提示“无法启动该程序,因为计算机中丢失MSVCP110D.dll(或MSVCP110.dll)。尝试重新安装该程序以解决此问题。”这是因为在这些操作系统中没有安装Visual Studio对应版本的Visual C++运行时组件。通过修改项目属性,能够使生成的程序可以在大多数Windows系统中运行。单击“项目”菜单,单击“项目名 属性”,会弹出“项目属性页”的对话框。单击左侧框中“配置属性”下“C/C++”前的加号,再单击“代码生成”。根据配置的实际情况(Debug或者Release)将右侧的“运行时库”选项改为“多线程调试”(针对Debug)或“多线程”(针对Release)即可,如图2.11所示。此外,也可以为这些计算机安装Visual Studio 2012的Visual C++运行库(Redistributable Package)。

![image](


图2.11 更改运行时库

《易学C++(第2版)》——2.2 如何创建一个程序相关推荐

  1. 阿里巴巴版来了:“有一个程序媛女友/老婆是什么样的体验?”

    "修得了Bug,下得了厨房,打起游戏来比你还痴迷.还能挑灯和你聊一聊代码优化"-- 这就是程序媛女神啊,但如何成为她背后的男人,以及他们有哪些心得,这算是某乎上经久不衰的一个话题, ...

  2. C#版及nodejs版的com端口监听程序

    感受: 写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了.所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人. 最近写一个com端口 ...

  3. 使用Eclipse EE(汉化版) 创建一个JavaWeb工程

    废话不说,看图说话! 第一步:打开eclipse ee,单击"文件"-->单击"新建"-->单击"动态Web项目". 若没找到& ...

  4. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  5. 使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

  6. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

  7. vs winform常用函数_使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

  8. 依赖注入[5]: 创建一个简易版的DI框架[下篇]

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]> ...

  9. VS2005-此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版

    VS2005-此计算机上已安装了试用版.必须先卸载以前安装的试用版后才能安装另一个试用版 以前安装过vs 2005后来安了2008,2005删了,现在项目需要2005,再准备安上,安的时候提示&quo ...

最新文章

  1. windows核心编程学习笔记(六)动态链接库
  2. JNI 返回 jbyteArray
  3. 开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。
  4. .NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记...
  5. 使用直接内存时可以更快
  6. Docker 入门尝鲜
  7. Bootstrap3 按钮状态提示
  8. 编写高质量JavaScript代码绳之以法(The Essentials of Writing High Quality JavaScript)翻译...
  9. 2018蓝桥杯A组:分数(3种方法 循环累称 快速幂运算 移位运算)
  10. 设计模式之Flyweight模式(笔记)
  11. 微信分享链接php,微信实现分享链接的缩略图和标题
  12. VS2017无法保存工具栏布局信息
  13. matlab中普通电感,matlab电感在哪
  14. 2022年京东新百货七夕礼遇季活动有什么亮点?
  15. opencv显示图片只显示部分(或认为图片太大)
  16. html5 contenteditable 可编辑属性
  17. 白蛋白纳米粒|莫西沙星小鼠血清白蛋白MSA纳米粒|利多卡因大鼠血清白蛋白RSA纳米粒
  18. 无问东西:你曾是少年
  19. 项目开发遇到前端传递时间问题处理
  20. Cadence 怎么给shape倒角

热门文章

  1. 15.Elasticsearch 7.15 Query DSL 之 Wildcard查询、Regexp查询
  2. oracle 调整shared pool,Oracle设置Shared Pool的大小
  3. django项目-自助饮料机
  4. GNU Radio: USRP2 and N2x0 Series
  5. “单向网闸”技术介绍-网络隔离的新型产品
  6. 聚合数据左磊:不走寻常路 做国内最好的数据聚合平台
  7. IFD6500_USB转串口驱动
  8. Cocos2D-HTML5开源2D游戏引擎
  9. 【规范】万字集大成的HDLFPGA学习和规范
  10. 2022-2027年中国发动机仪表市场规模现状及投资规划建议报告