Visual Studio 快捷键

来自:http://www.cnblogs.com/bluestorm/p/3315054.html

CTRL + DELETE 删除至词尾

CTRL + BACKSPACE 删除至词头
Ctrl+Shift+L: 删除当前行

Ctrl+K+Crtr+C: 注释选定内容
Ctrl+K+Crtr+U: 取消选定注释内容

F12 转到定义
CTRL + F12 转到声明

Shift+F12 查找所有引用
F1 帮助

CTRL + -向后定位
CTRL + SHIFT + -向前定位

F5: 启动调试
Ctrl+F5: 开始执行(不调试)
Shift+F5: 停止调试
Ctrl+Shift+F5: 重启调试
F9: 切换断点
Ctrl+F9: 启用/停止断点
Ctrl+Shift+F9: 删除全部断点
F10: 逐过程
Ctrl+F10: 运行到光标处
F11: 逐语句

CTRL + U转小写
CTRL + SHIFT + U转大写

CTRL + TAB下一个文档窗口
CTRL + SHIFT + TAB上一个文档窗口
CTRL + F4关闭文档窗口

Ctrl +C, 再Ctrl+V 复制一行,不需要鼠标选中,只要光标定位在改行即可

Ctrl +X, 再Ctrl+V 剪贴一行

Visual Studio 快捷键设置:
工具 -> 环境 –> 键盘 -> 显示命令包含 (输入如: 转到头文件)-> 新建快捷键

 

———————————————

VS2010灵活运用快捷操作功能

1,Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标、光标和动画文件
在Visual Studio 2008的安装目录下,
\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\2052文件夹下面,有一个VS2008ImageLibrary.zip,这个文件里面将常用的Windows系统图标、光标和动画文件集中到了一起。包括Office、Win9x、WinVista和WinXP等系统使用的,可以免费使用哦。

2,删除多余的using指令,并且排序
当我们新一个类的时候,Visual Studio 会将常用的命名空间using在类的头部。但是在我们写完一个类的时候,有些using是多余的,删除多余的using,再排一下序,可以使代码看起来更清晰。Visual Studio 2008 已经为我们做好了这一切。在代码编辑区点击右键,可以看到”组织 using”菜单,这就是我们需要的了。

3,复制或删除一行代码时,不用先选择它
如果你想复制一行代码,你只需要简单的按CTRL+c拷贝,然后按CTRL+v粘贴这行就可以了,而不需要选择整行的代码。如果你想删除一行代码,只需按CTRL+x就可以了。

4,取代其他编辑器里Ctrl+F的方便的增量查找
用过ultraedit会对那两个上下搜索按钮印象深刻,Visual studio里有更厉害的。
操作方法:
1).按Ctrl+I键;
2).键入你要搜索的文本。注意:这时你会看到光标跳至第一个匹配的地方,匹配的文本高亮显示;
3).再次按下Ctrl+I键,光标将跳至下一个匹配的文本;
4).按Ctrl+Shift+I可向后搜索;
5).要停止搜索,按ESC键;

5,如何在编辑器中进行框式选择
操作方法:
你是否知道VS提供了两种不同的选择模型:流式和框式吗?
大家应该都熟悉流式选择模型了,只要使用Shift+方向键即可(或者使用鼠标进行选择)。
框式选择则允许你同时对航和列进行选择。只要同时按下Shift+Alt+方向键,你就了解它的不同之处了。剪切,拷贝,粘贴,这些功能都能使用,只是需要记住从哪里开始选择的。啊,让我想起了那段做测试时的时光。
备注:也可以使用鼠标+Alt键完成该操作。前两天我还遇到该提示的一个有意思的用法。有时候我们拷贝网上的文章中的代码时会将行号一起拷进来,使用框式选择可以只选择行号部分,将其删除。

6,如何使用快捷键在当前代码行的上面或下面插入一行(推荐,很实用)
按下Ctrl+Enter会在上面插入一个空行,Ctrl+Shift+Enter则会在下面插入一个空行。光标会移至新行的开始处。
备注:这是我非常喜欢的一个快捷键,如果不用这个,则需要使用Home或End,然后使用方向键,再使用回车才能达到上面的效果。

7,安装之后,将您的IDE设置恢复到默认设置
如果IDE的设置在任何先前发布的版本中做了更改,它们都应该被恢复到默认设置。可以在Visual Studio 2008中点击菜单 Tools > Import and Export Settings… > Reset all settings,此外还有一些Import和Export的选项可用。

8,通过按”tab”两次插入代码块
操作步骤:
在编辑的中输入代码片段,比如”for”

在这个状态下,按两次”tab”键,将会插入代码块,如下图所示

此时你可以把第一”i”改成”j”,然后按Tab键,则所有的变量都变成了”j”。
备注:这样既快又不容易语法出错。

9,使用Ctrl+Tab打开IDE的导航,获得鸟瞰视图
同时在Visual Studio中导航到所有打开的文件和工具窗体
按”Ctrl+Tab”键,打开IDE导航窗口,按住Ctrl键,同时用方向键或鼠标选中一个文件或工具窗体来激活。

备注:这时最好不要松开”Ctrl+Tab”,按方向键看鸟瞰图,全部松开后就定位到需要的文件或工具窗体,说实在的,这窗口挺酷的。

10,查找匹配的标记
某些标识总是成对出现。例如,”{“标识必须用对应的”}”标识关闭。虽然你点击一个{ 和它匹配的}就会高亮显示,但是如果代码过长的话就不好找了,同样,编译器指示符”#region”必须有对应的”#endregion”指示符。当导航你的代码时,你有时需要查找对应的标识。通过按Ctrl-]你可以这样做。这个快捷键只有当光标在这些标识符的任何一个的下面时才起作用,它会立即跳转到对应的标识符而不管它是开的或闭的标识。
如果你想显亮两个匹配的标识之间的所有代码时,按Ctrl-Shift-]显亮整个块,并移动光标到开的标识处。这个快捷键只有当光标在任意的标识的下面时才起作用(如光标在区域内它就不会起作用了)
11.如果你想临时想禁用一段代码,你可以把这段代码注释掉,方法是:先选择这段代码,然后CTRL+k+c(按住CTRL键不放,然后,按一下k键,再按一下c键),见(图5)(图6)。使用CTRL+k+u可以取消注释
12 – 使用CTRL+n或CTRL+SHIFT+a创建新项
13 使用CTRL+空格进行自动完成

Shift+Alt+Enter: 切换全屏编辑

Ctrl+m+Crtr+o折叠所有大纲

Ctrl+M+Crtr+P: 停止大纲显示

Ctrl+K+Crtr+C: 注释选定内容

Ctrl+K+Crtr+U: 取消选定注释内容

Ctrl+J : 列出成员 智能感知

Ctrl+B,T / Ctrl+K,K: 切换书签开关

Ctrl+B,N / Ctrl+K,N: 移动到下一书签

Ctrl+B,P: 移动到上一书签

Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索

Ctrl+Shift+I: 反向渐进式搜索

Ctrl+F: 查找

Ctrl+Shift+F: 在文件中查找

F3: 查找下一个

Shift+F3: 查找上一个

Ctrl+H: 替换

Ctrl+Shift+H: 在文件中替换

Alt+F12: 查找符号(列出所有查找结果)

Ctrl+Shift+V: 剪贴板循环

Ctrl+左右箭头键: 一次可以移动一个单词

Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。

Ctrl+Shift+L: 删除当前行

Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态

Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态

Ctrl+E,S: 查看空白

Ctrl+E,W: 自动换行

Ctrl+G: 转到指定行

Shift+Alt+箭头键: 选择矩形文本

Alt+鼠标左按钮: 选择矩形文本

Ctrl+Shift+U: 全部变为大写

Ctrl+U: 全部变为小写代码快捷键

Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息

Ctrl+K,I: 快速信息

Ctrl+E,U / Ctrl+K,U: 取消选定注释内容

Ctrl+K,M: 生成方法存根

Ctrl+K,X: 插入代码段

Ctrl+K,S: 插入外侧代码

F12: 转到所调用过程或变量的定义窗口快捷键

Ctrl+W,W: 浏览器窗口

Ctrl+W,S: 解决方案管理器

Ctrl+W,C: 类视图

Ctrl+W,E: 错误列表

Ctrl+W,O: 输出视图

trl+W,P: 属性窗口

Ctrl+W,T: 任务列表

Ctrl+W,X: 工具箱

Ctrl+W,B: 书签窗口

Ctrl+W,U: 文档大纲

Ctrl+D,B: 断点窗口

Ctrl+D,I: 即时窗口

Ctrl+Tab: 活动窗体切换

Ctrl+Shift+N: 新建项目

Ctrl+Shift+O: 打开项目

Ctrl+Shift+S: 全部保存

Shift+Alt+C: 新建类

Ctrl+Shift+A: 新建项

Shift+Alt+Enter: 切换全屏编辑

Ctrl+B,T / Ctrl+K,K: 切换书签开关

Ctrl+B,N / Ctrl+K,N: 移动到下一书签

Ctrl+B,P: 移动到上一书签

Ctrl+B,C: 清除全部标签

Ctrl+I: 渐进式搜索

Ctrl+Shift+I: 反向渐进式搜索

Ctrl+F: 查找

Ctrl+Shift+F: 在文件中查找

F3: 查找下一个

Shift+F3: 查找上一个

Ctrl+H: 替换

Ctrl+Shift+H: 在文件中替换

Alt+F12: 查找符号(列出所有查找结果)

Ctrl+Shift+V: 剪贴板循环

Ctrl+左右箭头键: 一次可以移动一个单词

Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。

Ctrl+Shift+L: 删除当前行

Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态

Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态

Ctrl+M,P: 停止大纲显示

Ctrl+E,S: 查看空白

Ctrl+E,W: 自动换行

Ctrl+G: 转到指定行

Shift+Alt+箭头键: 选择矩形文本

Alt+鼠标左按钮: 选择矩形文本

Ctrl+Shift+U: 全部变为大写

Ctrl+U: 全部变为小写

doxygen 使用简介(C,C++为代码作注释)

来自:http://www.cnblogs.com/wishma/archive/2008/07/24/1250339.html

doxygen注释块

doxygen注释块其实就是在C”C++注释块的基础添加一些额外标识, 使doxygen把它识别出来, 并将它组织到生成的文档中去。

在每个代码项中都可以有两类描述, 这两类描述将在文档中格式化在一起: 一种就是brief描述, 另一种就是detailed。 两种都是可选的,但不能同时没有。

顾名思义, 简述(brief)就是在一行内简述地描述。而详细描述(detailed description)则提供更长, 更详细的文档。

在doxygen中, 有多种方法将注释块标识成详细描述:

  1. 你可以使用JavaDoc风格,即在C风格注释块开始使用两个星号’*’, 就像这样:
  2. /**
  3.  * … 描述 …
  4.  */
  5. 或者你使用Qt风格代码注释,即在C风格注释块开始处添加一个叹号’!’:
  6. /*!
  7.  * … 描述 …
  8.  */

注释块中间的星号是可选, 所以将注释块写成:

/*!

… 描述 …

*/

同样也是有效的.

  1. 第三种方法就是使用连续两个以上C++注释行所组成的注释块,而每个注释行开始处要多写一个斜杠或写一个叹号。像下行这样:
  2. ///
  3. /// … 描述 …
  4. ///

或者

//!

//!… 描述 …

//!

  1. 一些人喜欢使他们的注释块在文档中显得更为显目,所以你也可以这么做:
  2. /////////////////////////////////////////////////
  3. /// … 描述 …
  4. /////////////////////////////////////////////////

简述同样也可以同种写法:

  1. 一种是在一个doxygen注释块中使用“brief . 这个命令只对当前一个文字段有效, 所以详细描述应该与之间隔一个空行.

像这样:

/*! “brief 这里是简要描述.

*         这里仍然是简要描述.

*

* 详细描述从这里开始.

*/

  1. 如果在doxygen配置文件将JAVADOC_AUTOBRIEF设置成YES。则JavaDoc风格将注释块中的第一个句子视为简要描述, 这个句子可以以句号’.’、空格或者空行来结束:
  2. /** 这里是简述, 并由句号结束. 详细描述从这里
  3.  * 开始.
  4.  */

这个功能同样多行C++行注释段中有效:

/// 这里是简述, 并由句号结束. 详细描述从这里

/// 开始..

  1. 第三种方法就是详细描述注释段紧跟在一行C++注释段后面,至多隔一个空行, 如下面两个例子:
  2. /// 简述.
  3. /** 详细描述. */

或者

//! 简述.

 

//! 详细描述

//! 从这里开始.

注意最后一个例子, 例子那个空行是用来分隔简述注释段和详细描述段的, 不能去掉.而且JAVADOC_AUTOBRIEF不应该被设置成YES.

看上去doxygen是相当富有弹性, 但下面的例子是非法的:

//! 这个简述因为是多行的

//! 会被认为是详细描述..

/*! 而这里则是另外的详细描述.

*/

因为doxygen只允许一个简要和一个详细描述。

此外, 如果在一个代码项的声明之前有简要描述而且在其定义之前也有简要描述, 那么doxygen只使用声明之前的描述。而如果详细描述出现了同样的情况, doxygen则会使用定义之前的描述, 另外的描述会被忽略掉。

这里有一个使用Qt风格的C++代码:

//! A test class.

/*!

A more elaborate class description.

*/

 

class Test

{

public:

 

//! An enum.

/*! More detailed enum description. */

enum TEnum {

TVal1, /*!< Enum value TVal1. */

TVal2, /*!< Enum value TVal2. */

TVal3 /*!< Enum value TVal3. */

}

//! Enum pointer.

/*! Details. */

*enumPtr,

//! Enum variable.

/*! Details. */

enumVar;

 

//! A constructor.

/*!

A more elaborate description of the constructor.

*/

Test();

 

//! A destructor.

/*!

A more elaborate description of the destructor.

*/

~Test();

 

//! A normal member taking two arguments and returning an integer value.

/*!

“param a an integer argument.

“param s a constant character pointer.

“return The test results

“sa Test(), ~Test(), testMeToo() and publicVar()

*/

int testMe(int a,const char *s);

 

//! A pure virtual member.

/*!

“sa testMe()

“param c1 the first argument.

“param c2 the second argument.

*/

virtual void testMeToo(char c1,char c2) = 0;

 

//! A public variable.

/*!

Details.

*/

int publicVar;

 

//! A function variable.

/*!

Details.

*/

int (*handler)(int a,int b);

};

 

点击这里查看doxygen产生的HTML文档.

只有一行的注释段包含的是简述, 而多行的注释段则包含的是详细描述.

简要描述可以被用来进行class、namespace或者文件的成员描述, 被以较小的斜体字型显示出来。(这种描述可以通过将BRIEF_MEMBER_DESC设置成NO来隐藏。)默认情况下,简要描述会被显示成详细描述的第一个句子。(这同样可以通过将REPEAT_BRIEF设置成NO来屏蔽。)在Qt风格中, 两种描述都是可选的。

默认情况下, JavaDoc风格的注释段和Qt风格的注释段的行为是相同的。但这样, 就不符合JavaDoc标准, 注释段的第一个句应该自动识别为简要描述。你应该设置JAVADOC_AUTOBRIEFyly YES, 来启用这个功能。如果你设置了这个选项并想在句子中间放置一个句号, 你应该在后面添加一个反斜杠和一个空格. 就像下面的例子一样:

/** Brief description (e.g.” using only a few words). Details follow. */

Here is the same piece of code as shown above, this time documented using the JavaDoc style and JAVADOC_AUTOBRIEF set to YES:

/**

* A test class. A more elaborate class description.

*/

 

class Test

{

public:

 

/**

* An enum.

* More detailed enum description.

*/

 

enum TEnum {

TVal1, /**< enum value TVal1. */

TVal2, /**< enum value TVal2. */

TVal3 /**< enum value TVal3. */

}

*enumPtr, /**< enum pointer. Details. */

enumVar; /**< enum variable. Details. */

 

/**

* A constructor.

* A more elaborate description of the constructor.

*/

Test();

 

/**

* A destructor.

* A more elaborate description of the destructor.

*/

~Test();

 

/**

* a normal member taking two arguments and returning an integer value.

* @param a an integer argument.

* @param s a constant character pointer.

* @see Test()

* @see ~Test()

* @see testMeToo()

* @see publicVar()

* @return The test results

*/

int testMe(int a,const char *s);

 

/**

* A pure virtual member.

* @see testMe()

* @param c1 the first argument.

* @param c2 the second argument.

*/

virtual void testMeToo(char c1,char c2) = 0;

 

/**

* a public variable.

* Details.

*/

int publicVar;

 

/**

* a function variable.

* Details.

*/

int (*handler)(int a,int b);

};

 

点击这里查看doxygen产生的HTML文档.

不像其它的文档系统 , doxygen允许在代码项的定义之前面放置成员(包括全局函数)的注释。这种方法可以在源文件中进行文档注释工作。这就是使得头文件可以比较简洁, 使代码的实现人员更容易阅读。比较折中的方案就是在声明的地方添加简要描述, 在实现的地方添加详细描述。

在成员后面放置文档

如果你想对文件、结构体、联合体、类或者枚举的成员进行文档注释的话, 并且要在成员中间添加注释, 而这些注释往往都是在每个成员后面。为此, 你可以使用在注释段中使用'<‘标识

Here are some examples:

int var; /*!< Detailed description after the member */

This block can be used to put a Qt style detailed documentation block after a member. Other ways to do the same are:

int var; /**< Detailed description after the member */

或者

int var; //!< Detailed description after the member

//!

或者

int var; ///< Detailed description after the member

///

Most often one only wants to put a brief description after a member. This is done as follows:

int var; //!< Brief description after the member

或者

int var; ///< Brief description after the member

Note that these blocks have the same structure and meaning as the special comment blocks in the previous section only the < indicates that the member is located in front of the block instead of after the block.

Here is an example of the use of these comment blocks:

/*! A test class */

 

class Test

{

public:

/** An enum type.

* The documentation block cannot be put after the enum!

*/

enum EnumType

{

int EVal1,     /**< enum value 1 */

int EVal2      /**< enum value 2 */

};

void member();   //!< a member function.

 

protected:

int value;       /*!< an integer value */

};

点击这里查看doxygen产生的HTML文档.

警告:

这种注释方法只能在成员参数中使用。它们不能用在描述文件、类、联合体、名字空间和枚举本身。此外, 在下一节提到的结构化命令(如”class)在这种注释段中是无效的。

在其它地方进行注释

虽然我们一般是在声明和定义的前面添加文档注释块, 但也许出于某种情况需要将文档放在其它什么位置上。比如我们需要编写一段实际上不存在的文件的描述。因此, Doxygen允许将文档放置在任何位置。(除了在函数体内或在一个普通的注释段)

为了达到这种目的, 你唯一要做的就是在注释段中使用结构化命令。

结构化命令(就像其它命令)由一个反斜杠(“), 或 JavaDoc风格中使用的@来做开头, 后面紧跟着命令名字和一些参数。例如, 你想注释一个名为Test的类,如下例:

/*! “class Test

“brief A test class.

 

A more detailed class description.

*/

命令”class被用来指示代码段中包含着关于Test类的文档.其它的结构化命令有:

  • “struct生成C结构的文档.
  • “union生成联合体的文档.
  • “enum生成枚举的文档.
  • “fn生成函数的文档.
  • “var生成变量或typedef或枚举值的文档.
  • “def生成#define定义的文档.
  • “file生成关于一个文件的文档.
  • “namespace生成名字空间的文档.
  • “package生成Java包的文档.
  • “interface生成IDL接口的文档.

参看特殊命令得到更多关于这些命令或其它命令的详细信息.

对C++类的成员进行文档注释时, 必须对类本身进行文档注释。这同样对名字空间有效。要对全局函数、typedef、枚举或宏定义进行文档注释, 则必须先对包含它们的文件进行文档(这通常是头文件).

再重复一下, 因为它经常被忘记: 如果要对全局项目(如:函数、typedefs、枚举或宏等), 你必须必须对定义它们的文件进行文档注释。换一句话, 你至少在文件写下

/*! “file */

/** @file */

这样的注释.

下面是一个名为structcmd.h头文件的例子, 里面包含了使用结构化命令的例子:

/*! “file structcmd.h

“brief A Documented file.

 

Details.

*/

 

/*! “def MAX(a,b)

“brief A macro that returns the maximum of “a a and “a b.

 

Details.

*/

 

/*! “var typedef unsigned int UINT32

“brief A type definition for a .

 

Details.

*/

 

/*! “var int errno

“brief Contains the last error code.

 

“warning Not thread safe!

*/

 

/*! “fn int open(const char *pathname,int flags)

“brief Opens a file descriptor.

 

“param pathname The name of the descriptor.

“param flags Opening flags.

*/

 

/*! “fn int close(int fd)

“brief Closes the file descriptor “a fd.

“param fd The descriptor to close.

*/

 

/*! “fn size_t write(int fd,const char *buf, size_t count)

“brief Writes “a count bytes from “a buf to the filedescriptor “a fd.

“param fd The descriptor to write to.

“param buf The data buffer to write.

“param count The number of bytes to write.

*/

 

/*! “fn int read(int fd,char *buf,size_t count)

“brief Read bytes from a file descriptor.

“param fd The descriptor to read from.

“param buf The buffer to read into.

“param count The number of bytes to read.

*/

 

#define MAX(a,b) (((a)>(b))?(a):(b))

typedef unsigned int UINT32;

int errno;

int open(const char *,int);

int close(int);

size_t write(int,const char *, size_t);

int read(int,char *,size_t);

点击这里查看doxygen产生的HTML文档.

因为例子中的每个注释都包含了结构化命令, 所以所有的注释块都可以移动到其它的地方, 而不会对生成的文档产生影响。这种方法的坏处是当原型发生了改变 , 你不得不改变结构化命令的参数。因此, 在使用它们之前, 应该认真考虑一下是否真正需要使用它们。

 

Doxygen – Generate documentation from source code

Refer to http://www.stack.nl/~dimitri/doxygen/

Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.

Doxygen can help you in three ways:

  1. It can generate an on-line documentation browser (in HTML) and/or an off-line reference manual (in $\mbox{\LaTeX}$) from a set of documented source files. There is also support for generating output in RTF (MS-Word), PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code.
  2. You can configure doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. Doxygen can also visualize the relations between the various elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams, which are all generated automatically.
  3. You can also use doxygen for creating normal documentation (as I did for the doxygen user manual and web-site).

Doxygen is developed under Mac OS X and Linux, but is set-up to be highly portable. As a result, it runs on most other Unix flavors as well. Furthermore, executables for Windows are available.

visual studio里的几个输出的设置及一些文件的作用

来源:
http://tdcqljhwy.blog.163.com/blog/static/1716847812013858579593/

首先是 OutPut Directory ,它的值不会直接影响到你文件的输出,但它会间接的影响其他输出,比方说默认值中包含有$(OutDir).

Intermediate Directory ,中间目录,生成的obj文件,预编译头,预编译相关的idb及pdb,buildlog都会在这里.

idb 是系统生的成的状态信息,可以加速随后的编译

pdb 包含调试信息

Linker->General->OutPut File,输出文件,虽然填的是exe的路径,但.ilk文件会按这个路径输出.

Linker->Debugging->Genrerate Program Database File,输出的pdb文件

Linker->Advanced->Import Library 指示了将随同dll生成的lib文件输出的文件名和路径

DSW:全称是Developer   Studio   Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成
DSP:全称是Developer   Studio   Project,也是一个配置文件,不过她记录的是一个项目的所有配置信息,纯文本文件
OPT:与DSW、DSP配合使用的配置文件,她记录了与机器硬件有关的信息,同一个项目在不同的机器上的opt文件内容是不同的
CLW:记录了跟ClassWizard相关的信息,如果丢失了clw文件,那么在Class   View面板里就没有类信息
PLG:实际上是一个超文本文件,可以用Internet   Explorer打开,记录了Build的过程,是一个日志型文件
RC:资源描述文件,记录了所有的资源信息,在资源编辑器里作的修改,实际上都是对RC文件的修改
RC2:附加的资源描述文件,不能直接资源编辑器修改,只能手工添加,可以用来添加额外的资源
RES:经过资源编辑器编译之后的资源文件,以二进制方式存放
SBR:编译器生成的浏览信息文件,在代码导航的时候非常有用,她需要在编译时指定/FR或者/Fr开关
BSC:BSCMAKE.EXE将所有的SBR文件作为输入,经过处理之后输出一个BSC文件,在代码导航的时候实际用到的是BSC文件
ILK:当选定渐增型编译连接时,连接器自动生成ILK文件,记录连接信息
PDB:全称是Program   DataBase,即程序数据库文件,用来记录调试信息,是一个相当重要的文件,没有他,程序无法正常调试
LIB:如果项目输出是Dll的话,一般会输出一个跟项目同名的Lib文件,记录输出的函数信息
EXP:同Lib,是跟Dll一起生成的输出文件
PCH:全称是PreCompiled   Header,就是预先编译好的头文件,在编译时指定/Yu开关时编译器自动生成

关于,ilk文件及渐增式编译连接

:       VS2005编译时出现这样的错误:
: Compiling…
: Image.cpp
: Linking…
: LINK : warning LNK4076: invalid incremental status file “Debug/code.ilk”;
:             linking nonincrementally
: code.exe – 0 error(s), 1 warning(s)

原因:

VC编译时可以选择incremental linking(渐增式编译),也就是每次重新编译并不编译
所有的源文件,只编译改动过的文件。而编译器怎么知道哪些编译过哪些每编译过呢,
除了检查修改时间外,这个ilk文件也是很重要的信息。
如果你因为误操作或者VC自己的BUG引起了ilk文件的损坏,下一次编译时当然无法根据
ilk进行incremental linking了。但是在这种情况下也没什么大问题,VC自己会解决的,
所以也只出了一个警告。

解决办法:

把Dubug目录下.ilk文件强行删掉再重新编译一次就行了。