vc操作大全.docx
- 文档编号:20149125
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:26
- 大小:664.69KB
vc操作大全.docx
《vc操作大全.docx》由会员分享,可在线阅读,更多相关《vc操作大全.docx(26页珍藏版)》请在冰豆网上搜索。
vc操作大全
VisualC++的使用
在Windows操作系统下选择“开始”→“程序”→“MicrosoftVisualC++6.0”→“MicrosoftVisualC++6.0”,即可进入如下图的VisualC++的IDE开发环境。
程序编辑区
Workspace窗口,显示目前的工作区及project等信息
Output窗口,显示程序编译、连接的结果
在VisualC++的开发环境中,除了一般的工具栏之外,还可以看到“程序编辑区”、“Workspace”窗口及“Output”窗口,如果您觉得程序编辑区不够大,可以将“Workspace”及“Output”窗口拖出来,成为浮动式窗口。
由于VisualC++的开发环境功能很多,因此在本附录里,我们只简单的介绍如何使用VisualC++来编写一般的C程序。
编辑程序
由于VisualC++6.0必须先创建一个Project,才能执行这个Project里面的程序,因此我们要先创建一个全新的project,才能开始编辑程序,您可以跟随下列的步骤进行。
步骤1
进入VisualC++6.0后,选择“File”菜单中的“New”选项,即会出现如下图所示的“New”对话框。
步骤2
在对话框中选择“Projects”项中的“Win32ConsoleApplication”(程序执行时,会将执行结果显示在一个MS-DOS的窗口中),并且在“Projectname”字段里为您所创建的Project工作区命名,在“Location”栏中输入您希望存放Project文件夹的位置。
我们就称这个Project名称为“SayHello”,Project所在的位置为“c:
\c_program”,单击【OK】按钮即可在c:
\c_program的位置下面创建一个名为SayHello的文件夹。
步骤3
接着会出现“Win32ConsoleApplication-Step1of1”窗口,询问您欲创建的类型为何?
此例中我们选择第一种“Anemptyproject”,即空的project,再单击【Finish】按钮。
步骤4
VisualC++会将您所选择的project类型汇总成如图2-4的画面,若是觉得想要更改之前的设置,按下【Cancel】按钮即会取消设置。
如果设置没有问题,按下【OK】按钮后,系统即会根据需求创建一个空的project供您使用。
步骤5
回到VisualC++的窗口后,您可以看到Project“SayHello”已经创建完成,此时,按下工具栏上的【NewTextFile】按钮
,就可以开始编写C的程序了。
我们以下面的程序为例,来说明VisualC++的编译与执行的整个流程。
01#include
02intmain(void)
03{
04printf("HelloKitty!
\n");/*输出HelloKitty!
*/
05printf("HelloWorld!
\n");/*输出HelloWorld!
*/
06return0;
07}
将程序代码输入程序编辑区内,输入后的窗口如下图所示。
步骤6
接着,您还必须给这个新的程序命名,就称它为“sayhello.c”吧!
单击工具栏上的【save】按钮,即会出现如下图的“保存为”对话框,在对话框中输入文件名sayhello.c。
步骤7
每次要编写一个新的程序时,都必须先将这个程序存盘后再加入Project中。
在窗口中右边的工作区里,单击鼠标的右键,在出现的“快捷菜单”中选择“InsertFileintoProject”选项,将这个新的程序区加入“SayHello”中,使这个程序成为Project“SayHello”的一员。
您可以注意到VisualC++用不同的颜色来代表程序代码里各种不同的功能,例如关键字(Keyword)以蓝色显示,而程序的注释以绿色显示,这个设计更有利于我们对程序代码的编辑、修改以及查错。
接着我们就以这个简单的程序来说明,在VisualC++中如何编译、执行。
编译与执行
当程序编写完成之后,一定是迫不及待想看看执行的结果是否正确,此时,您可以选取“Build”菜单中的Execute选项,或是直接按下【Ctrl+F5】键来编译与执行程序。
当程序开始编译后,下方的Output窗口会显示其编译、连接的结果。
如果很幸运的,程序没有任何错误,程序经过编译后就会立刻被执行,这时VisualC++会自动打开一个DOS窗口让您查看执行结果。
以前面所输入的程序代码为例,按下【Ctrl+F5】键,程序经过编译与执行后的结果如下图,您可以看到程序执行的结果会在屏幕上所出现的MS-DOS窗口中显示,如下图所示。
按下任意键即会回到VisualC++的窗口之中。
如果只是想要编译,而不执行程序,选取“Build”菜单中的Compile选项,或是直接按下【Ctrl+F7】键即可将编译过后的程序,变成“目标文件”,若是想要变成可执行文件时,编译完成后要再按【F7】键,或是选取“Build”菜单中的Build选项。
处理语义上的错误
当然并不是每次编译程序时都能够这么顺利,若是程序出现错误,IDE下方的Output窗口会告诉您程序有错误。
例如在前例中,我们在程序代码的第4行少打了一个双引号,且在第5行忘了分号,在编译时,VisualC++便会纠正我们所犯的错误。
01#include
02intmain(void)
03{
04printf("HelloKitty!
\n);/*输出HelloKitty!
*/
05printf("HelloWorld!
\n")/*输出HelloWorld!
*/
06return0;
07}
当您将上面这段程序编译之后,Output窗口会告诉您程序发生错误而停止执行,如下图所示。
此时可以看到在Output窗口中会显示程序发生错误的地方及原因,只要将鼠标在窗口中的提示上双击,程序编辑区中的程序就会寻找发生错误的地方,再根据错误信息一一改正错误即可。
利用Debug菜单调试
上例的错误是属于语法上的错误(Syntaxerror),如果是语义上的错误(Semanticerror),可以利用VisualC++提供的查错功能逐步执行程序,并查看变量值来找出错误所在。
仿照前例创建一个新的project,并把project名称命名为mydebug,再输入下面的程序代码,将它保存成myprog.c后,加入mydebug这个project里。
01#include
02intmain(void)
03{
04inti,sum=0;
05intsquare(int);
06
07for(i=1;i<4;i++)
08sum+=square(i);
09
10printf("sum=%d\n",sum);
11return0;
12}
13
14intsquare(inta)
15{
16returna*a;
17}
选择“Build”菜单中的“StartDebug”选项中的“StepInto”,或是直接按下【F11】键,VisualC++会检查程序与最近一次编译后的目标文件是否有更改,若是已经改动,则会先行编译再进行跟踪。
下图为“Build”菜单中的“StartDebug”选项。
当程序开始跟踪时,还可以看到画面上会出现Debug菜单、Variables窗口与Watch窗口,下图为连续按了13次【F11】键之后的窗口内容。
VisualC++的调试功能激活后,可以在某一列程序的前面看到
符号,这个黄色箭号即代表目前所要执行的程序行,您可以根据黄色箭号了解程序的流程。
而Debug菜单中有不少好用的跟踪程序的小工具,下图为Debug菜单的介绍。
下表为Debug菜单中的各个功能、快捷键及其说明的整理,在使用调试功能跟踪程序时,可以参考下表的说明。
功能及图标
快速键
说明
Restart
Ctrl+Shift+F5
重新开始跟踪程序
StopDebugging
Shift+F5
停止跟踪程序
ApplyCodeChanges
Alt+F10
跟踪时加入新更改的程序代码
ShowNextStatement
无
目前所要执行的程序行
StepInto
F11
跳到函数中一步一步的执行
StepOver
F10
不到函数中一步一步执行,直接取得函数的执行结果
StepOut
Shift+F11
跳离函数的逐步执行
RuntoCursor
Ctrl+F10
跟踪程序至光标所在位置
QuickWatch
Shift+F9
查看目前执行位置的变量值
Watch
无
查看选定的变量值
Variables
无
查看所有变量值及函数返回值
Registers
无
查看寄存器中的值
Memory
无
查看在内存中存放的值
CallStack
无
查看在堆栈中的值
Disassembly
无
程序代码以汇编语言的形式显示
在Debug菜单中除了【F11】键(StepInto)可以逐步执行程序之外,【F10】键(StepOver)也可以完成类似的工作。
“StepInto”及“StepOver”这两个功能有什么不同呢?
其实它们都会一步一步的执行程序,不同的是当执行到一个函数时,“StepInto”会跳到函数中一步一步的执行。
而“StepOver”并不会跳到函数里执行,因此当程序中包含有函数时,用“StepInto”来调试会更为"深入"而有效果。
此外VisualC++还有一个供您查看变量的功能,只要按一下Debug菜单中的“Watch”
选项,即可开启或关闭Watch窗口,在VisualC++中,当您激活除错功能时,Watch窗口的默认值为开启的状态,下图为Watch窗口。
在Name字段上单击鼠标左键,即可输入欲查看的变量名称,若是变量太多,还可以将变量分门别类放在不同的Watch窗口里,只要按下Watch窗口下方的“Watch1”~“Watch4”标签,再输入变量名称,程序在逐步跟踪时就可以看到变量值的变化。
如果想取消欲查看的变量,也只要将鼠标移到欲取消的变量上,单击鼠标左键,再使Name字段的内容变成空白即可。
除了Watch窗口可以看到变量值的变化之外,在Variables窗口中也会显示所有的变量内容,以及函数的返回值,当欲查看的变量较多时,同时使用Watch窗口与Variables窗口会是比较方便的选择,如下图所示。
我们以前面所输入的程序为例,将变量sum加到Watch窗口中,就可以在Watch窗口中仔细观察变量sum的变化,而在Variables窗口中也可以看到所有变量及函数的变化,每当您按一次【F10】或【F11】键跟踪程序时,变量与函数的值就会逐渐改变,如下图所示。
当程序在debug模式时,您也可以直接将鼠标移到程序编辑区中,光标会变成
的形状,此时将鼠标移到变量上,即可看到目前变量的值,如下图所示。
各自编译的实例
我们以实际的范例来说明如何将程序中的函数与主程序分开,让它们分别编译,却又可以在主程序中调用自定义的函数。
下面的程序,可以计算圆面积、周长、球体积与球表面积,只要输入半径与选项之后,即可按照所选择的项目进行运算。
01/*progB-1,计算圆面积、周长、球体积与球表面积*/
02#include
03#definePI3.1415926
04doublearea(int),circumf(int);
05doublevolume(int),surface(int);
06intmain(void)
07{
08intr,item;
09
10printf("
(1)圆面积
(2)圆周长\n");
11printf("(3)圆球体积(4)圆球表面积\n");
12printf("请选择欲计算的项目:
");
13do
14scanf("%d",&item);
15while((item>4)||(item<1));
16do
17{
18printf("输入半径:
");
19scanf("%d",&r);
20}while(r<=0);
21printf("\n");
22switch(item)
23{
24case1:
printf("半径=%d,圆面积=%.2f\n",r,area(r));
25break;
26case2:
printf("半径=%d,圆周长=%.2f\n",r,circumf(r));
27break;
28case3:
printf("半径=%d,圆球体积=%.2f\n",r,volume(r));
29break;
30case4:
printf("半径=%d,圆球表面积=%.2f\n",r,surface(r));
31}
32return0;
33}
34
35doublearea(intr)/*自定义函数area(),计算圆面积*/
36{
37return(PI*r*r);
38}
39
40doublevolume(intr)/*自定义函数volume(),计算圆球体积*/
41{
42return(4/3*PI*r*r*r);
43}
44
45doublesurface(intr)/*自定义函数surface(),计算圆球表面积*/
46{
47return(4*PI*r*r);
48}
49
50doublecircumf(intr)/*自定义函数circumf(),计算圆周长*/
51{
52return(2*PI*r);
53}
/*progB-1OUTPUT------
(1)圆面积
(2)圆周长
(3)圆球体积(4)圆球表面积
请选择欲计算的项目:
1
输入半径:
1
半径=1,圆面积=3.14
-------------------------*/
由于程序相当的长,在阅读上反而造成困难。
若是能够适当的让主程序仅担负起调用函数的功能,而这些函数皆存放在其他的文件中,将可以使程序不再冗长,并且能够增加程序的易读性,因此,我们可以利用VisualC++所提供的功能,将自定义函数另外储存并分别编译。
多半的C编译程序均具有独自编译的功能,如果您所使用的C编译器并不是VisualC++,可以参考该编译器的使用手册来进行各自编译。
在接下来的范例中,重新修改程序progB-1,将主程序main()存成pB_2,并将area()、volume()、surface()与circumf()等四个函数稍做修改后,分别储存成pB_2a.c、pB_2b.c、pB_2c.c、pB_2d.c,这几个程序的内容分列如下:
01/*progB-2,计算圆面积、周长、球体积与球表面积*/
02#include
03doublearea(int),circumf(int);
04doublevolume(int),surface(int);
05intmain(void)
06{
07intr,item;
08
09printf("
(1)圆面积
(2)圆周长\n");
10printf("(3)圆球体积(4)圆球表面积\n");
11printf("请选择欲计算的项目:
");
12do
13scanf("%d",&item);
14while((item>4)||(item<1));
15do
16{
17printf("输入半径:
");
18scanf("%d",&r);
19}while(r<=0);
20printf("\n");
21switch(item)
22{
23case1:
printf("半径=%d,圆面积=%.2f\n",r,area(r));
24break;
25case2:
printf("半径=%d,圆周长=%.2f\n",r,circumf(r));
26break;
27case3:
printf("半径=%d,圆球体积=%.2f\n",r,volume(r));
28break;
29case4:
printf("半径=%d,圆球表面积=%.2f\n",r,surface(r));
30}
31return0;
32}
01/*progB-2a,自定义函数area(),计算圆面积*/
02#definePI3.1415926
03doublearea(intr)/*自定义函数area(),计算圆面积*/
04{
05return(PI*r*r);
06}
01/*progB-2b,自定义函数volume(),计算圆球体积*/
02#definePI3.1415926
03doublevolume(intr)/*自定义函数volume(),计算圆球体积*/
04{
05return(4/3*PI*r*r*r);
06}
01/*progB-2c,自定义函数surface(),计算圆球表面积*/
02#definePI3.1415926
03doublesurface(intr)/*自定义函数surface(),计算圆球表面积*/
04{
05return(4*PI*r*r);
06}
01/*progB-2d,自定义函数circumf(),计算圆周长*/
02#definePI3.1415926
03doublecircumf(intr)/*自定义函数circumf(),计算圆周长*/
04{
05return(2*PI*r);
06}
下面的步骤介绍了如何在VisualC++里分别创建主程序pB_2.c,以及其他四个函数模块pB_2a.c、pB_2b.c、pB_2c.c与pB_2d.c。
步骤1首先参考附录B.1-“编辑程序”的步骤1~步骤4,创建一个全新的project,此例中,我们将project名称定为myprogram。
步骤2创建完成后,按下“Standard”标准工具栏中的【NewTextFile】按钮
,即可打开一个全新的文字文件工作区。
此时的窗口如下图所示:
步骤3输入主程序pB-2.c,程序输入完成之后,可看到如下图所示的窗口:
步骤4按下“Standard”标准工具栏中的【Save】按钮
,会出现“保存为”对话框,如下图所示。
此时即可将文件保存,在此例中,我们将文件名设置为pB_2.c。
步骤5此时在工作区上任意一处单击鼠标右键,在出现的快捷菜单中选择“InsertFileintoProject”如下图所示,即会出现目前所创建project的名称,在此例中,我们选择project“myprogram”后,pB_2.c即会被加入myprogram中。
步骤6按下工作区左边的Workspace窗口下方的FileView标签
,即可看到在SourceFiles文件夹下,在project“myprogram”里,已包含有程序pB_2.c,如下图所示。
步骤7重复步骤2~6,将area()、volume()、surface()与circumf()函数以同样的方式,分别储存为pB_2a.c、pB_2b.c、pB_2c.c与pB_2d.c,并加入project“myprogram”中,如下图所示。
步骤8现在即可按照平常编译执行程序的方式,将这5个程序一起编译。
程序执行的结果如下所示。
/*progB-2~B-2dOUTPUT---
(1)圆面积
(2)圆周长
(3)圆球体积(4)圆球表面积
请选择欲计算的项目:
3
输入半径:
2
半径=2,圆球体积=25.13
-----------------------------*/
虽然是将几个程序一起编译,却会产生一个与project名称相同的执行文件,以及数个各自程序的obj文件,再以前面所举的范例为例,在存放程序的文件夹下的Debug文件夹中,即可看到这些经过编译后的目标文件与可执行文件,如下图所示。
在VisualC++中,只要将相关的文件放在同一个project中,编译时就可以将它们一起交由编译器执行,对使用者来说是相当的方便,可以省去不少设置上的问题与麻烦。
只有obj的情况
上一节所讨论的是原始程序文件存在的情形,如果我们只有obj文件,要如何才能使用这个已经被编译过后的目标文件呢?
在不知道obj文件中的函数名称及函数定义时,就没有办法使用这个obj文件。
因此我们在这一节中,要讨论的是只有obj文件,但是知道存在该文件中的函数定义的情况下,要如何将它和主程序连接在一起。
再以上节的范例为例,假设我们有一个目标文件pB_2e.obj(您可以在范例文件夹中找到这个文件),其内容为一个求半圆面积halfarea()函数,返回值类型为double,有一个整数类型的自变量,亦为半径r。
您可以参考下列步骤将该obj文件与主程序连接。
步骤1为了加入新的函数功能,因此我们将上节的程序progB-2做适度的修改,并将它更名为progB-3。
01/*progB-3,计算圆面积、周长、球体积与球表面积*/
02#include
03doublearea(int),circumf(int);
04doublevolume(int),surface(int);
定义halfarea的原型
05doublehalfarea(int);
06intmain(void)
07{
08intr,item;
09
10printf("
(1)圆面积
(2)圆周长\n");
11printf("(3)圆球体积(4)圆球表面积\n");
12printf("(5)半圆面积\n");
13printf("请选择欲计算的项目:
");
14do
15scanf("%d",&item);
16while
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 操作 大全