vc++6.0工程设置介绍

在上一讲中,我们以单文档程序为例学习了MFC类库的文档/视图结构,其中涉及到了阅读和分析MFC类库的源代码,因此有一定的难度。在本讲之中,我们就暂时告别一下这些令人敬畏的源代码,来看看VC6的工程设置选项。不过,虽然讲座中不谈及源代码,心铃还是建议大家有空就多读读程序,因为这是一条能够迅速增加编程知识,提高编程能力的有效途径。

图9-1:工程设置对话框

打开或新建一个包含至少一个工程的Workspace后,VC6的Project菜单中的“Settings…”命令就变为有效,选择它或者按下热键Alt+F7后,便可调出如图9-1所示的工程设置对话框,这里面的选项将影响整个工程的建立和调试过程,因此很重要,虽然在一般情况下,其中的大多数选项都不用改变,但了解一下它们的含义能够消除我们心中存在的神秘感,并加深我们对VC工程的理解。

在这个对话框中,左上方的下拉列表框用于选择一种工程配置,包括有Win32 Debug、Win32 Release和All Configurations(指前两种配置一起),某些选项在不同的工程配置中有不同的缺省值。左边的树形视图给出了当前工程所有的文件及分类情况。如果我们把工程“Schedule”置为高亮显示(正如图9-1那样),对话框的右边就会出现总共十个选项卡,其中列出了与工程有关的各种选项,不少选项卡中有一个Reset按钮,按下它后可以把选项卡内的各项设置恢复到生成工程时的初始值。如果我们在树形视图中选择一个文件类或一个文件,那么对话框右边的选项卡会自动减少到一个或两个,其中列出的都是与选中的文件类或文件有关的选项。下面我们就以Win32 Debug为例来看看与工程有关的十个选项卡各自的功能与含义,与文件有关的选项卡则请大家自己琢磨一下。

l          General

这个选项卡比较简单,从上向下的第一个选项用于更改使用MFC类库的方式,大家是否还记得我们曾在AppWizard的第五步指定以DLL的方式来使用MFC类库?但现在我们可以在两种方式之间随意进行切换。第二个选项用于指定在编译连接过程中生成的中间文件和输出文件的存放目录,对于调试版本来说,缺省的目录是工程下面的“Debug”子目录。最下面的第三个选项用于指定是否允许每种工程配置都有自己的文件依赖关系(主要指头文件),由于绝大多数工程的调试版本和发布版本都具有相同的文件依赖关系,所以通常不需要更改该选项。

l          Debug

图9-2:Debug选项卡
Debug选项卡中是一些与调试有关的选项,如图9-2所示,由于选项比较多,它们被分成了几个类,我们可以从Category中选择不同的类别,选项卡就会切换显示出相应的选项,后面的C/C++和Link选项卡也有这种情况。

在General类别中,我们可以指定要调试的可执行文件名,如果正在编写的程序是一个DLL,那么应在此处指定一个用来调试该DLL的EXE文件。另外三个选项可以指定用于调试的工作目录,开始调试时给程序传送的命令行参数,以及进行远程调试时可执行文件的路径。把类别切换到Additional DLLs后,我们可以指定在开始调试时是否为一些额外的DLL装载调试符号信息,只有装载了符号信息后才能跟踪进DLL。

l          C/C++

图9-3:C/C++选项卡
C/C++选项卡控制着VC6的编译器,其中的选项比较多,也比较复杂,心铃要重点介绍一下它。如图9-3所示,最下面有一个Project Options编辑框,里面列出的各种命令开关将会在开始编译时作为命令行参数传送给VC6的编译器,以便对编译过程进行控制。这些命令开关会跟随其它选项改变而改变,另外,如果我们知道某些命令开关,也可以直接在这个编辑框中输入,开关所对应的选项会自动改变。

在General类别中,Warning level用于指定编译器显示警告的级别,None表示不显示任何警告,L1表示只显示严重的警告,L2表示显示比L1次严重的警告,L3表示显示比L2次严重的警告,L4则表示显示出所有的警告,包括那些安全忽略的警告,如果选中了Warnings as errors,那么显示的每一个警告都将会引起一个错误,这样在编译完毕后就无法启动连接器来进行连接。C/C++语言的语法相当复杂和严格,尽管编辑器在产生了警告后并不会中断工程的建立过程,但警告信息往往表示程序在某些地方存在着潜在的问题,所以心铃建议大家今后把警告等级设置成L3,并尽量排除掉编译过程中产生的警告。Optimizations用于设置代码优化方式,优化的目的主要有提高运行速度和减小程序体积两种,但有时候这两种目的是相互矛盾的。另外,在极少数情况下,不进行优化,程序能正常运行,打开了优化措施之后,程序却会出现一些莫名其妙的问题。其实这多半是程序中有潜在的错误,关闭优化措施往往只是暂时解决问题。Debug info用于指定编译器产生的调试信息的类型,第一讲中心铃曾介绍过VC6支持即编即调功能,为了使用这一项功能,必须在这里选择生成“Program Database for Edit and Continue”类型的调试信息,而不能生成与老版本编译器兼容的调试信息。Preprocessor definitions是一些预先定义的宏名,MFC类库和Windows的头文件中大量使用了这些宏来设置条件编译。
C++ Language类别中的选项涉及到了C++语言的一些高级特性,包括有成员指针的表示方式、异常处理、运行时类型信息、构造位移等,它们的概念都比较深奥,好在我们一般情况下都不用改变它们。Code Generation类别中的选项涉及如何生成目标代码,在这里我们可以选择目标处理器的类型、运行时库的类型、进行函数调用时参数的缺省传递方式、结构成员的对齐方式等,一般情况下保持缺省值即可。在Customize类别中,从上到下六个选项的含义分别为:是否禁止使用Microsoft对C++的扩展;是否允许函数级别的连接;是否消除重复的字符串;是否允许进行最小化的重建;是否允许递增编译方式;是否允许编译器在开始运行时向Output窗口中输出自己的版本信息。其中第二、三两项为灰色是因为它们与即编即调功能不兼容,如果在General类别中选择生成其它类型的调试信息,那么就可以更改这两个选项。
在Listing Files类别中,我们可以指定编译器生成浏览信息和列表文件(Listing file),前者可由浏览信息维护工具BSCMAKE生成浏览信息文件,后者则包含了C/C++源文件经过编译后对应的汇编指令。Optimizations类别允许我们对优化措施进行更细微的控制,选择了Customize后,便可以选择进行哪几项优化,在Inline function expansion中我们可以指定对内联函数的扩展方式。Precompiled Headers类别中是关于预编译头文件的一些选项,一般情况下都不用更改。Preprocessor类别中是关于预处理的一些选择,我们可以在这里预先定义一些宏名,指定部分或所有符号具有未定义状态,指定额外的包含文件所在的目录。

l          Link

图9-4:Link选项卡
Link选项卡控制着VC6的连接器,同样比较复杂。如图9-4所示,在General类别中,我们可以指定输出的文件名,以及一些在连接过程中需要使用的额外的库文件或目标文件,下边五个选项的含义分别为:生成调试信息;忽略所有缺省的库文件;允许递增连接方式(这种方式可以加快连接的速度);生成MAP文件;允许进行性能分析。

图9-5:Resources选项卡
Customize类别中的一些选项与General类别有重复。选中Use program database允许使用程序数据库,这样连接器会把调试信息放在程序数据库中,如果不选中该选项,那么也不能使用递增连接方式。如果选中了Force file output,那么即使某个模块引用了一些未定义或者重复定义的符号,连接器仍然会生成一个有效(但不一定能正确运行)的可执行文件。在Debug类别中,我们可以指定调试信息的类别是Microsoft的格式,还是COFF格式,或者两种都有,选中Separate types后连接器会把调试信息分开放在PDB文件中,这样连接起来会更快一些,但调试时速度却会慢一些。Input类别中是一些与输入库文件有关的选项,我们可以在这里指定使用或不使用某些库文件或目标文件。Output类别中则是一些与最终输出的可执行文件有关的选项,包括:程序装载的基地址;程序的入口地址;要为堆栈保留多少空间;程序的版本号。这些选项虽然是空着的,但它们都有自己的缺省值,一般情况下都不用改变。

l          Resources

Resources选项卡控制着VC6的资源编译器。如图9-5所示,我们可以指定编译后生成的资源文件的路径,资源的语言类型,以及额外的资源包含目录。

l          MIDL

这个选项卡与COM(组件对象模型)编程有关,我们不讨论它。

l          Browse Info

在这个选项卡中,我们可以指定是否在建立工程的同时也生成浏览信息文件,有了这个文件后,我们就能够在文本编辑器中通过关联菜单的相应命令快速定位到某个符号的定义或引用的地方。

l          Custom Build

这个选项卡允许我们为建立工程增加自己的步骤,其中在Commands中输入要执行的命令,在Outputs中输入该命令执行后得到的输出文件,VC6将检查这个输出文件和源文件的时间先后关系,以便在需要的时候再次执行指定的命令,重新生成一次输出文件。

l          Pre-link step

这个选项卡用于添加在连接之前要执行的命令。

l          Post-build step

这个选项卡用于添加在工程建立完毕之后要执行的命令。

 

上面介绍的十个选项卡中后五个都不太常用,前五个中也有很多选项极少需要更改,所以大家只要了解一下就行了。在下一讲中,心铃准备谈谈ClassWizard和MFC类库的消息映射机制,后者是MFC类库的一个相当基础和重要的概念。
  
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 VC++6.0 中,您可以按以下步骤设置断点: 1. 在代码行的左侧单击鼠标左键,或者在该行上单击鼠标右键并选择“Toggle Breakpoint”(切换断点)。 2. 在菜单栏中选择“Debug”(调试),然后选择“New Breakpoint...”(新建断点)。 3. 在“New Breakpoint”(新建断点)对话框中,选择要设置的断点类型(如函数断点、数据断点等),然后输入断点条件(如果需要)。 4. 单击“OK”即可设置断点。 注意:设置断点前,您需要确保已经打开了调试器(通过单击“Debug”菜单中的“Start Debugging”(开始调试)或按下F5键)。此外,您还可以使用“Debug”菜单中的其他选项(如“Step Into”(逐语句调试)、“Step Over”(逐过程调试)等)来控制程序的执行。 ### 回答2: 在VC 6.0中设置断点是为了方便调试程序,可以在程序运行到指定位置时暂停执行,观察变量的值、程序流程等信息。以下是设置断点的步骤: 1. 打开VC 6.0工程文件。 2. 在代码中找到需要设置断点的位置。可以在行号的左侧单击来设置断点,或者使用菜单栏的“插入断点”选项。 3. 设置断点后,在程序运行时,当执行到断点所在的位置,程序会暂停执行。 4. 在程序暂停后,可以使用调试工具栏中的按钮逐步执行程序,观察变量的值和程序流程。常用的调试按钮有:继续(F5),单步执行(F9),逐过程返回(F11)等。 5. 设置完断点后,可以在菜单栏中选择“开始调试”或按下F5键来启动程序的调试执行。 6. 当程序执行到断点位置时,会自动暂停执行,可以通过调试工具栏上的按钮进行调试操作,或者使用快捷键对断点进行删除、禁用等操作。 需要注意的是,在设置断点前,需要保证程序已经被编译,以确保断点能够正确地被识别和触发。 以上是VC 6.0中设置断点的简单步骤,通过设置断点,我们可以更方便地进行程序调试和错误排查。 ### 回答3: 在VC 6.0中设置断点非常简单。以下是设置断点的步骤: 1. 打开VC 6.0,并打开你的项目。 2. 寻找你想要在代码中设置断点的位置。 3. 点击代码编辑窗口左侧的行号区域。 4. 单击选中你想要设置断点的行号。 5. 右键单击选中的行号,选择“插入断点”。 6. 此时,你会在该行号的左边看到一个小红色的圆圈,表示断点已经成功设置。 7. 现在你可以运行你的程序了。当程序执行到该断点所在的行时,程序会自动暂停在断点处。 8. 当程序在断点处暂停时,你可以使用调试工具栏上的控制按钮(例如“继续”、“单步执行”、“逐出函数”等),来控制程序的执行流程。 请注意,如果你设置了多个断点,程序会在每个断点处暂停执行。你可以通过单击断点左侧的小红色圆圈来启用或禁用断点。如果你想删除一个断点,只需右键单击断点处的行号,然后选择“删除断点”。 这就是在VC 6.0中设置断点的方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值