在Visual C++ 6.0下编译调试简单C程序简单过程

来源:互联网 发布:北京java程序员 编辑:程序博客网 时间:2024/06/04 18:59

 第一步,启动 Microsoft Visual C++ 6.0

启动 VC 可以通过“开始”菜单,也可以通过桌面快捷方式,或者 Quick Launch 工具栏等方式。


启动之后,我们看到的是空白的 VC 开发环境。

虽然上面的截图是英文版的 VC,但是其中的菜单、窗口都和中文版的一一对应。

跟大多数的 Windows 应用程序一样,VC 最上面是菜单,然后是工具栏,中央是工作区,最下面一行是状态栏。我们现在看到的工作区,左边是 Workspace 窗口,右边是灰底的空白窗口。

     第二步,创建一个工程

在 VC 中,一个源程序文件必须属于一个工程;所以我们首先来创建一个工程。

选择菜单:
    File --> New...
打开下面窗口:


在 Projects Tab 页面中,我们看到可以创建许多种类型的工程;并且可以指定工程的名字,和存储位置。

事实上如果要开发简单的 C 语言程序,我们只需要创建一种工程:Win32 Console Application,也就是 Windows 32 控制台程序,或者俗称“黑屏”程序。我们进行如下设置:

顺序 选项 操作 说明
1 工程类型 选择"Win32 Console Application"  
2 Location C:/TEST/ 作为例子,我们暂且把该演示程序保存在 C 盘根目录下面的 TEST 文件夹中。如果该文件夹不存在,您需要首先创建它。
该选项不需要手工输入,您可以单击在 “Locaction” 右下方的 “...” 按钮,来选择该文件夹。
注意:
虽然上面的截屏上显示的是 "C:/Test/DemoQuestion",但那是完成了第 3 步之后的结果。在这一步,只需要输入“C:/TEST/”。  
3 Project name 输入:"DemoQuestion" 随着 Project Name 的输入,Location 部分将在原来路径的后面自动加入 Project Name。
4 完成 点击"OK"按钮  

     第三步,修改新工程的配置

作为 Win32 Console Application 类型的程序,只有一个配置界面,如下面所示。如果选择其他类型的应用程序,可能会有多个配置界面。


在这里我们选择第一个选项,也就是默认选项:
     An empty project. (一个空的工程)
然后选择完成。点击:
     Finish (完成)
按钮。

我们的这个选项将创建一个空的工程;其他的选项将自动生成一些源代码文件。就计算机等级考试的要求来说,VC 自动生成的源代码文件对于我们没有帮助。

     第四步,确认创建新工程

下面窗口显示出我们此前所做的配置,以供我们做最后的检查。如果确认无误,该项目就将被创建。


我们确认该页面显示的内容都是正确的。点击:
     OK (确认)
按钮,创建该项目。

     第五步,创建新工程完毕

VC 会根据我们所填写的配置创建相关的文件夹,创建完成后会显示创建的结果,如下图所示。


在窗口的左半部分的 workspace 上,我们可以看到有两个 Tab 页,ClassView 和 FileView。 ClassView 页面会显示当前工程中所声明的类、全局变量等;对于写C语言程序来说,这个页面没有什么大的作用。 FileView 页面显示了当前项目中的所有文件。

1. 工程

我们看到,VC 创建了一个叫做 "DemoQuestion" 的工程。左边树型结构中的 "DemoQuestion files" 节点代表了该工程。

2. 文件和逻辑文件夹

在该工程下面,我们发现了三个预定义的逻辑文件夹,分别是:"Source Files"、"Header Files"、"Resource Files"。在每一个文件夹下面,都没有文件;这是因为此前我们选择的是创建一个空的工程。这三个文件夹是 VC 预先定义的,就编写简单的单一源文件的C程序而言,我们只需要使用 Source Files 一个文件夹就够了。

事实上这三个文件夹是按照里面所存放的文件类型来定义的,如下表所示:

预定义文件夹 包含的文件类型
Source Files cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
Header Files h;hpp;hxx;hm;inl
Resource Files ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe

我们之所以称这三个文件夹为逻辑文件夹,是因为他们只是在工程的配置文件中定义的,在磁盘上并没有物理地存在这三个文件夹。

我们也可以删除自己不使用的逻辑文件夹;或者根据我们项目的需要,创建新的逻辑文件夹,来组织工程文件。

3. Workspace 工作空间

在创建 DemoProject 的同时,VC 也创建了一个叫做 "DemoQuestion" 的工作空间,并且该工作空间只包含一个工程。如节点 "Workspace 'DemoProject': 1 project(s)" 所示。

如果您不想深究的话,只要了解下面几点就可以了:

VC 是按照 Workspace 来管理项目和代码的。一次必须打开一个 Workspace。
一个 Workspace 中可以包含一个或者多个工程。
一个工程可以包含一个或者多个逻辑文件夹。
一个文件夹里面可以包含零个或者多个文件。
一个工程至少包含一个源代码文件。
当创建新工程的时候,一个同名的 Workspace 同时被创建;该 workspace 只包含一个项目,就是新创建的这个项目。
或者稍稍详细一点说,VC 在管理项目和代码的时候,是按照如下一个树型的结构来组织的:

Workspace
Project 1 (项目 1)
Heaer files (一个或者多个头文件)
Source files (一个或者多个源代码文件)
Other files (一个或者多个其他文件)
Project 2 (项目 2)
Heaer files (一个或者多个头文件)
Source files (一个或者多个源代码文件)
Other files (一个或者多个其他文件)
     第六步,查看物理文件夹

打开 Windows 资源管理器,定位到 C:/Test/DemoQuestion 目录,我们可以看到如下文件和文件夹:


下面是这些文件和文件夹的简单说明:

文件和文件夹 说明
文件 DemoQuestion.dsw 这是 workspace 描述文件。
文件 DemoQuestion.dsp 这是 DemoQuestion 项目配置文件。包括逻辑文件夹在内的关于该项目的所有配置,都保存在此文件中。
文件 DemoQuestion.ncb 这是 VC 内部使用的一个临时文件。我们不必关心此文件。
文件夹 Debug Debug 版本的编译输出文件将被保存在该文件夹中。如果项目的编译属性修改为 Release 之后,会生成另外一个叫做 "Release" 的文件夹。

关于 Debug 和 Release,这是两个最常见的编译选项。相同源代码生成的 Debug 版本的 .exe 文件比 Release 版本要大一些,因为 Debug 版本多包含了一些帮助 VC 调试程序的符号等信息。

回到目录




添加一个文件到一个空的工程中

在上面一步,我们创建了一个空的工程。现在我们将添加一个源代码程序到该工程中。

     第一步,创建新的 .c 源文件

选择菜单:
    File --> New...
打开下面窗口:


在 Files Tab 页面中,进行如下操作:

顺序 选项 操作 说明
1 文件类型 选择"C++ Source File" 因为这里没有 C Source File 选项,所以我们选择 C++ 语言的对应项。
2 File 输入:Question.c 实际上文件名叫做什么并不重要,作为演示目的,我们称其为 Question,因为在考场上,我们是在回答别人预设好的问题。
注意:Question.c 后面的 ".c" 后缀是必要的。如果是要创建 .cpp 文件,该后缀就可以不写了。  
3 Location 保持默认值,不需要修改。  
4 完成 点击"OK"按钮  

     第二步,查看源文件

当该 .c 源文件创建后,在左边 Workspace 窗口窗口的 FileView Tab 页面中,可以看到该新创建的 Question.c 节点。


在 Windows 资源管理器中,我们也可以发现该文件被物理地创建了。



回到目录




编写程序

     第一步,编写源代码

作为例子,我们编写了一个输出 "Hello World" 的程序。该程序将连续输出 10 遍该字符串,并且在每一次输出前首先打印一个序号。

在考试环境,或者实际开发工作中,有可能是基于别人写到一半,或者已经写好的代码进行修改。


     第二步,打开“编译”工具栏

这一步并非是必要的。如果编译工具栏已经打开,或者您决定通过菜单而不是工具来进行操作,并没有必要打开工具栏。菜单命令和工具栏快捷按钮一般是可以替代的。

使用鼠标右键单击工具栏的空白处,在弹出的菜单中选中“Build(编译)”一项,就可以打开编译工具栏。


在该工具栏中,我们可以选择"Debug"模式,或者"Release"模式进行编译。在调试程序的过程中,我们一般选择 Debug 模式。


     第三步,编译

我们可以通过菜单或者工具栏按钮进行编译。

如果使用菜单,可以选择:
     Build --> Build DemoQuestion.exe F7
     或者:
     Build --> Rebuild All
如果使用工具栏,可以选择如下图中的按钮:

如果编译完全成功,会显示 "0 error(s), 0 warning(s)"。另外,即便有一些 warning,也可能编译成功。Warning 表示该代码应该不会影响程序运行,但是有可能存在潜在的问题,编译器不推荐这么写。


     第四步,除错

一般情况下,代码在编写过程中必然会发生各种错误。编译器检查出来的错误会被显示在 VC 6.0 环境的 Build 窗口。

如下图所示,编译器提示:在Question.c的第10行,发生了 C2065 错误,变量 j 从没有被声明就被使用了。


我们发现上面的错误是因为误把 i 写成了 j,只要改回来,这个错误就被修改好了。

回到目录




运行程序

我们至少有两种方法运行一个控制台类型的 C 程序。一种是通过工具栏,一种是通过命令行。

     第一种,工具栏

单击 Build 工具栏中的红色感叹号按钮,就可以运行一个编译好的程序:


如果该程序在上一次被编译后又被修改,下面窗口将会弹出,问我们是否要把最新的代码重新编译。我们一般都选择 "Yes"。


随后该程序就会在一个新弹出的窗口中被运行。


     第二种,命令行

下面显示了命令行运行该程序的方法。我们首先切换到编译好的程序所在的目录,然后输入该程序的名字就可以运行。

在本例中,我们输入的是 DemoQuestion.exe。后面的 .exe 可以输入,也可以运行该程序。


在上面例子中,主要用到了两个命令:cd 和 dir 。

cd 命令用于进入目录,是 Come to Directory 的缩写。简单的,有三种情况:
     "cd [目录名]" : 进入目录 "目录名"。
     "cd /" : 回到根目录。
     "cd .." : 回到上一层目录。两个点 ".." 代表父目录,也就是上一层目录。


dir 命令可以显示当前目录下所有的文件和文件夹,是 DIRectory 的缩写。

回到目录




调试程序 - 设置断点

设置断点是跟踪程序实际运行流程的最好方法。在 Debug 模式下,程序可以再断点处停止,我们可以让程序单步执行,来确认程序是否在按照我们所预想的方式在运行。

     第一步,设置断点

将鼠标停留在要被暂停的那一行,选择工具栏按钮 "Insert/Remove Breakpoint (F9)",就可以添加一个断点。如果该行已经被设置了断电,那么该断点会被删除。


     第二步,开始调试

如下图所示,选择菜单 "Go (F5)",就可以开始调试程序。


VC 环境会进入调试模式,并且目标程序会在断点处被暂停。

     第三步,单步运行

选择菜单或者工具栏的 "Step Over (F10)" 按钮,可以进行程序单步运行。不断选择 "F10",程序会一步一步地被执行。



回到目录




调试程序 - 动态察看变量的值

单步调试程序的过程中,我们可以在 Watch 窗口中动态地察看变量的值。

     第一种,自动查看

在 Variables 子窗口中会自动显示当前运行上下文中的变量的值。


     第二种,添加变量到 Watch 列表

如果本地变量比较多,自动显示的窗口比较混乱,您可以在 Watch 列表中添加自己想要监控的变量名。例如,下图中我们在 Watch1 子窗口中添加了变量 "i":


添加结束后,该变量的值会被显示出来。并且随着单步调试的进行,我们会看到变量 i 的值逐渐递增。