VC小技巧

WBOY
WBOYOriginal
2016-06-07 15:29:381017browse

欢迎进入C/C++编程社区论坛,与300万技术人员互动交流 >>进入 1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器

欢迎进入C/C++编程社区论坛,与300万技术人员互动交流 >>进入

  1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行

  了。

  2) 如果你想与别人共享你的源代码项目,但是把整个项目做拷贝又太大。你完全可以删掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目录下的所有文件。

  3) 当你的Workspace中包含多个Project的时候,你可能不能直观地、一眼看出来哪个是当前项目。可以如下设置:Tools->Options->Format,然后在Category中选择Workspace window,改变其默认的字体(比如设成Fixedsys)就行了。

  4) 如何给已有的Project改名字?将该Project关掉。然后以文本格式打开.dsp文件,替换原来的Project名字即可。

  5) VC6对类成员的智能提示功能很有用,但有时候会失灵。你可以先关掉项目,将.clw和.ncb删掉,然后重新打开项目,点击菜单项View->ClassWizard,在弹出的对话框中按一下“Add All”按钮;重新Rebuild All。应该可以解决问题。

  1.检测程序中的括号是否匹配

  把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。

  2.查看一个宏(或变量、函数)的宏定义

  把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。

  相当可喜的是,它也可以看到Microsoft定义的系统宏,非常good.

  3.格式化一段乱七八糟的源代码

  选中那段源代码,按ATL+F8。

  4.在编辑状态下发现成员变量或函数不能显示

  删除该项目扩展名为.ncb文件,重新打开该项目。

  5.如何整理ClassView视图中大量的类

  可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.

  6.定位预处理指定

  在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.

  7.如何添加系统中Lib到当前项目

  在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.

  8.如何添加系统中的头文件(.h)到当前项目.

  #include ,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前

  目录找.

  9.如何在Studio使用汇编调试

  在WorkBench的Debugger状态下按CTRL+F7.

  10.怎样处理ClassZiard找不到的系统消息

  如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将

  Message filter改为Window就有了.

  11.如何干净的删除一个类

  先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。

  12.在Studio中快速切换两个文件

  有时,我们需要在最近使用的两个文件中快速切换,换Ctrl+F6。这在两个文件不相今的时候就有用的.

  13.取得源程序预处理后的结果:

  在Studio里,可以在->PROJECT->SETTINGS->C/C++->Project Options中,在最后加上 /P /EP这两个编译开关即可做到"只进行预处理".就可以了。编译以后就可以在源程序目录中发现“文件名.I ”的文本文件。这就是预处理后的结果。

  (注意注:区分大小定,请用大定/P)

  14.在Debug模式中查看WINAPI调用后的返回值:

  很简单,且实用:在watch中加入@hr,err。

  15.产生指定源程序文件的汇编代码:

  从IDE菜单的Project->Setting打开项目设置,按如下文件做:

  1.先在左边选择指定文件,可以多选。

  2. 在右边的C++属性页中,在category中选择List Files,接着在下面的List Files Type中选择Assembly and source code(或选择其它),最后在List File Name中输入在个C/C++源文件产生的相应的汇编代码的文件。

  3.编译整个工程。

  16.手工编译纯资源成dll:

  Rc.exe /v data.rc

  Cvtres.exe /machine:ix86 data.res

  Link /SUBSYSTEM:WINDOWS /DLL /NOENTRY data.res ;编译成DLL文件

  这种方式创建的DLL是最小的,比起你用Win 32 Dynamic Libray等产生的更小。

  17:怎样快速生成一个与现有项目除了项目名外完全相同的新项目?

  利用File菜单下生成新项目中的Custom AppWizard ,选择 An existing Project ,然后选择现有项目的项目文件名(*.dsp)Finish,编译后就生成一个可以生成与现有项目相同但可以重新取名的项目的AppWizard。你可以象用MFC AppWizard一样用它。如果不想用了,可以在VC 安装目录下Common\MSDev98\Template目录中删除该Wizard中.awx和 .pdb文件。

  18:如果想把整个项目拷贝到软盘,那些文件可以删掉?

  除了项目文件夹中debug文件夹可以删除外,.ncb,.clw,.opt 等文件也可以删除,这些文件Rebuilt all后可以重新生成。

  附:VC项目文件说明

  .dsp 项目参数配置文件,这个文件太重要,重点保护对象。.

  .dsw 工作区文件,重要性一般,因为它信息不我,容易恢复。

  以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的。

  .clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建.

  .ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。

  .opt 工程关于开发环境的参数文件。如工具条位置等信息;(可丢弃)

  .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.

  .plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成.

  .hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.

  .mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式.

  .bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.

  .map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.

  .pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.

  .pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.

  .exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.

VC小技巧

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn