查看完整版本: Visual C++开发工具与调试技巧整理

佳佳象棋 2007-9-28 15:42

Visual C++开发工具与调试技巧整理

[size=12pt]自己总是用[/size][size=12pt]VC[/size][size=12pt]平台来开发东西,但是有时候总是出这样那样的问题,呵呵,总是需要上网查资料来解决[/size][size=12pt],[/size][size=12pt]在这里把自己用到上网查的一些技巧摘录如下[/size][size=12pt],[/size][size=12pt]希望对大家有用,省去大家再去搜索的烦恼。[/size]
[size=12pt]1.[/size][size=12pt]如何在[/size][size=12pt]Release[/size][size=12pt]状态下进行调试[/size]
[size=12pt]Project[/size][size=12pt]-[/size][size=12pt]>Setting[/size][size=12pt]=[/size][size=12pt]>ProjectSetting[/size][size=12pt]对话框,[color=blue]选择[/color][/size][size=12pt]Release[/size][size=12pt]状态[/size][size=12pt]。[/size][size=12pt]C/C++[/size][size=12pt]标签[/size][size=12pt]中的[/size][size=12pt]Category[/size][size=12pt]选[/size][size=12pt]General[/size][size=12pt],[/size][size=12pt]Optimizations[/size][size=12pt]选[/size][size=12pt]Disable(Debug)[/size][size=12pt],[/size][size=12pt]Debut info[/size][size=12pt]选[/size][size=12pt]Program Database[/size][size=12pt]。在[/size][size=12pt]Link[/size][size=12pt]标签[/size][size=12pt]中[color=red]选中[/color][/size][size=12pt]Generate debug info[/size][size=12pt]复选框[/size][size=12pt]。[/size]

[size=12pt]注:只是一个介乎[/size][size=12pt]Debug[/size][size=12pt]和[/size][size=12pt]Release[/size][size=12pt]的中间状态,所有的[/size][size=12pt]ASSERT[/size][size=12pt]、[/size][size=12pt]VERIFY[/size][size=12pt]都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下[/size][size=12pt]QuickWatch[/size][size=12pt]、调用队列跟踪功能仍然有效,和[/size][size=12pt]Debug[/size][size=12pt]版一样。[/size]
[size=12pt]2. Release[/size][size=12pt]和[/size][size=12pt]Debug[/size][size=12pt]有什么不同[/size]
[size=12pt]Release[/size][size=12pt]版称为发行版,[/size][size=12pt]Debug[/size][size=12pt]版称为调试版。[/size]
[size=12pt]Debug[/size][size=12pt]中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。[/size][size=12pt]Release[/size][size=12pt]版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。[/size]
[size=12pt]Release[/size][size=12pt]的[/size][size=12pt]exe[/size][size=12pt]文件链接的是标准的[/size][size=12pt]MFC DLL(Use MFC in a shared or static dll)[/size][size=12pt]。这些[/size][size=12pt]DLL[/size][size=12pt]在安装[/size][size=12pt]Windows[/size][size=12pt]的时候,已经配置,所以这些程序能够在没有安装[/size][size=12pt]Visual C++ 6.0[/size][size=12pt]的机器上运行。而[/size][size=12pt]Debug[/size][size=12pt]版本的[/size][size=12pt]exe[/size][size=12pt]链接了调试版本的[/size][size=12pt]MFC DLL[/size][size=12pt]文件,在没有安装[/size][size=12pt]Visual C++6.0[/size][size=12pt]的机器上不能运行,因为缺相应的[/size][size=12pt]DLL[/size][size=12pt],除非选择[/size][size=12pt]use static dll when link[/size][size=12pt]。[/size]
[size=12pt]3.[/size]
[size=12pt]ASSERT[/size][size=12pt]和[/size][size=12pt]VERIFY[/size][size=12pt]有什么区别[/size]
[size=12pt]ASSERT[/size][size=12pt]里面的内容在[/size][size=12pt]Release[/size][size=12pt]版本中不编译,[/size][size=12pt]VERIFY[/size][size=12pt]里面的内容仍然翻译,但不再判断真假。所以后者更安全一点。[/size]
[size=12pt]例如[/size][size=12pt]ASSERT(file.Open(strFileName))[/size][size=12pt]。[/size]
[size=12pt]一旦到了[/size][size=12pt]Release[/size][size=12pt]版本中,这一行就忽略了,[/size][size=12pt]file[/size][size=12pt]根本就不[/size][size=12pt]Open()[/size][size=12pt]了,而且没有任何出错的信息。如果用[/size][size=12pt]VERIFY()[/size][size=12pt]就不会有这个问题。[/size]
[size=12pt]4.[/size][size=12pt]Workspace[/size][size=12pt]和[/size][size=12pt]Project[/size][size=12pt]之间是什么样的关系[/size]
[size=12pt]每个[/size][size=12pt]Workspace[/size][size=12pt]可以包括几个[/size][size=12pt]project[/size][size=12pt],但只有一个处于[/size][size=12pt]Active[/size][size=12pt]状态,各个[/size][size=12pt]project[/size][size=12pt]之间可以有依赖关系,在[/size][size=12pt]project[/size][size=12pt]的[/size][size=12pt]Setting..[/size][size=12pt]中可以设定,比如那个[/size][size=12pt]Active[/size][size=12pt]状态的[/size][size=12pt]project[/size][size=12pt]可以依赖于其他的提供其函数调用的静态库。[/size]
[size=12pt]5. [/size][size=12pt]如何在非[/size][size=12pt]MFC[/size][size=12pt]程序中使用[/size][size=12pt]ClassWizard[/size]
[size=12pt]在工程目录下新建一个空的[/size][size=12pt].RC[/size][size=12pt]文件,然后加入到工程中就可以了。[/size]
[size=12pt]6.[/size][size=12pt]如何设置断点[/size]
[size=12pt]按[/size][size=12pt]F9[/size][size=12pt]在当前光标处增加一个断点和取消一个断点。[/size]
[size=12pt]另外,在编辑状态下,按[/size][size=12pt]Ctrl+B[/size][size=12pt]组合键,弹出断点设置对话框。然后单击【[/size][size=12pt]Condition…[/size][size=12pt]】按钮弹出设置断点条件的对话框进行设置。[/size]
[size=12pt]7.[/size][size=12pt]在编辑状态下发现成员变量或函数不能显示提示是如何打开显示功能[/size]
[size=12pt]这似乎是目前这个[/size][size=12pt]Visual C++ 6.0[/size][size=12pt]版本的一个[/size][size=12pt]bug[/size][size=12pt],可按如下步骤使其正常,如再出现,可如法炮制:[/size]
[size=12pt](1)[/size][size=12pt]关闭[/size][size=12pt]Project[/size]
[size=12pt](2)[/size][size=12pt]删除[/size][size=12pt]“[/size][size=12pt]工程名[/size][size=12pt].ncb”[/size][size=12pt]文件[/size]
[size=12pt](3)[/size][size=12pt]重新打开工程[/size]
[size=12pt]8.[/size][size=12pt]如何将一个通过[/size][size=12pt]ClassWizard[/size][size=12pt]生成的类彻底删除[/size]
[size=12pt]首先在工作区的[/size][size=12pt]FileView[/size][size=12pt]中选中该类的[/size][size=12pt].h[/size][size=12pt]和[/size][size=12pt].cpp[/size][size=12pt]文件,按[/size][size=12pt]delete[/size][size=12pt]删除,然后在文件管理器中将这两个文件删除,再运行[/size][size=12pt]ClassWizard[/size][size=12pt],这时出现是否移走该类的提示,选择[/size][size=12pt]remove[/size][size=12pt]就可以了。[/size]
[size=12pt]9. [/size][size=12pt]如何将在[/size][size=12pt]workspace[/size][size=12pt]中消失的类找出来[/size]
[size=12pt]打开该类对应的头文件,然后将其类名随便改一下,这个时候工作区就会出现新的类,再将这个类改回原来的名字就可以了。[/size]
[size=12pt]10. [/size][size=12pt]如何清除所有的断点[/size]
[size=12pt]菜单【[/size][size=12pt]Edit[/size][size=12pt]】-[/size][size=12pt]>[/size][size=12pt]【[/size][size=12pt]Breakpoints…[/size][size=12pt]】,打开[/size][size=12pt]“Breakpoints”[/size][size=12pt]对话框,单击【[/size][size=12pt]Remove All[/size][size=12pt]】按钮即可。快捷键是[/size][size=12pt]“Ctrl + Shift + F8”[/size][size=12pt]。[/size]
[size=12pt]11. [/size][size=12pt]如何再[/size][size=12pt]ClassWizard[/size][size=12pt]中选择未列出的信息[/size]
[size=12pt]打开[/size][size=12pt]“ClassWizard”[/size][size=12pt]对话框,然后切换到[/size][size=12pt]“Class Info”[/size][size=12pt]页面。改变[/size][size=12pt]“Message filter”[/size][size=12pt],如选择[/size][size=12pt]“Window”[/size][size=12pt],[/size][size=12pt]“Message”[/size][size=12pt]页面就会出现[/size][size=12pt]Window[/size][size=12pt]的信息。[/size]
[size=12pt]12. [/size][size=12pt]如何检测程序中的括号是否匹配[/size]
[size=12pt]把光标移动到需要检测的括号前面,按快捷键[/size][size=12pt]“Ctrl + ]”[/size][size=12pt]。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告。[/size]
[size=12pt]13. [/size][size=12pt]如何查看一个宏[/size][size=12pt]([/size][size=12pt]或变量、函数[/size][size=12pt])[/size][size=12pt]的定义[/size]
[size=12pt]把光标移动到要查看的一个宏上,就比如说最常见的[/size][size=12pt]DECLARE_MAP_MESSAGE[/size][size=12pt]上按一下[/size][size=12pt]F12([/size][size=12pt]或右键菜单中的相关菜单[/size][size=12pt])[/size][size=12pt],如果没有建立浏览文件,就会出现提示对话框,按【确定】按钮,然后就会跳到该宏[/size][size=12pt]([/size][size=12pt]或变量、函数[/size][size=12pt])[/size][size=12pt]定义的地方。[/size]
[size=12pt]14. [/size][size=12pt]如何添加[/size][size=12pt]Lib[/size][size=12pt]文件到当前工程[/size]
[size=12pt]单击菜单【[/size][size=12pt]Project[/size][size=12pt]】-[/size][size=12pt]>[/size][size=12pt]【[/size][size=12pt]Settings…[/size][size=12pt]】弹出[/size][size=12pt]“Project Setting”[/size][size=12pt]对话框,切换到[/size][size=12pt]“Link”[/size][size=12pt]标签页,在[/size][size=12pt]“Object/library modules”[/size][size=12pt]处输入[/size][size=12pt]Lib[/size][size=12pt]文件名称,不同的[/size][size=12pt]Lib[/size][size=12pt]之间用空格格开。[/size]
[size=12pt]15. [/size][size=12pt]如何快速删除项目下的[/size][size=12pt]Debug[/size][size=12pt]文件夹中临时文件[/size]
[size=12pt]在工作区的[/size][size=12pt]FileView[/size][size=12pt]视图中选中对应的项目,单击右键弹出菜单,选择【[/size][size=12pt]Clean(selection only)[/size][size=12pt]】菜单即可。[/size]
[size=12pt]16. [/size][size=12pt]如何快速生成一个现有工程除了工程名外完全相同的新工程[/size]
[size=12pt]在新建工程的[/size][size=12pt]“New”[/size][size=12pt]对话框中选择[/size][size=12pt]“Custom Appwizard”[/size][size=12pt]项,输入新工程的名字,单击【[/size][size=12pt]OK[/size][size=12pt]】按钮。出现[/size][size=12pt]“Custom AppWizard”[/size][size=12pt]项,输入新工程的名字,单击【[/size][size=12pt]OK[/size][size=12pt]】按钮。出现[/size][size=12pt]“Custom AppWizard[/size][size=12pt]-[/size][size=12pt]Step 1 of 2”[/size][size=12pt]对话框,选择[/size][size=12pt]“An existing Project”[/size][size=12pt]项,单击【[/size][size=12pt]Next[/size][size=12pt]】按钮。出现[/size][size=12pt]“Custom AppWizard[/size][size=12pt]-[/size][size=12pt]Step 2 of 2”[/size][size=12pt]对话框,选择现有工程的工程文件名,最后单击【[/size][size=12pt]Finish[/size][size=12pt]】按钮。编译后就生成一个与现有工程相同但可以重新取名的工程[/size][size=12pt]AppWizard[/size][size=12pt]。[/size]
[size=12pt]现在就可以项用[/size][size=12pt]MFC AppWizard[/size][size=12pt]一样用这个定制的向导。如果不想用了,可以在[/size][size=12pt]Visual C++ 6.0[/size][size=12pt]安装目录下[/size][size=12pt]Common\MSDev98\Template[/size][size=12pt]目录中删除该[/size][size=12pt]Wizard[/size][size=12pt]对应的[/size][size=12pt].awx[/size][size=12pt]和[/size][size=12pt].pdb[/size][size=12pt]文件。[/size]
[size=12pt]17. [/size][size=12pt]如何解决[/size][size=12pt]Visual C++ 6.0[/size][size=12pt]不正确连接的问题[/size]
[size=12pt]情景:明明改动了一个文件,却要把整个项目全部重新编译链接一次。刚刚链接好,一运行,又提示重新编译链接一次。[/size]
[size=12pt]这是因为出现了未来文件[/size][size=12pt]([/size][size=12pt]修改时间和创建时间比系统时间晚[/size][size=12pt])[/size][size=12pt]的缘故。可以这样处理:找到工程文件夹下的[/size][size=12pt]debug[/size][size=12pt]目录,将创建和修改时间都比系统时间的文件全部删除,然后再从新[/size][size=12pt]“Rebuild All”[/size][size=12pt]一次。[/size]
[size=12pt]18. [/size][size=12pt]引起[/size][size=12pt]LNK2001[/size][size=12pt]的常见错误都有哪些[/size]
[size=12pt]遇到的[/size][size=12pt]LNK2001[/size][size=12pt]错误主要为:[/size][size=12pt]unresolved external symbol “symbol”[/size]
[size=12pt]如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。[/size]
[size=12pt]一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。以下是可能产生[/size][size=12pt]LNK2001[/size][size=12pt]错误的原因:[/size]
[size=12pt]<1>[/size][size=12pt]由于编码错误导致的[/size][size=12pt]LNK2001[/size][size=12pt]错误[/size]
[size=12pt](1)[/size][size=12pt]不相匹配的程序代码或模块定义[/size][size=12pt](.DEF)[/size][size=12pt]文件导致[/size][size=12pt]LNK2001[/size][size=12pt]。例如,如果在[/size][size=12pt]C++[/size][size=12pt]源文件了内声明了一变量[/size][size=12pt]“var1”[/size][size=12pt],却试图在另一个文件内以变量[/size][size=12pt]“var1”[/size][size=12pt]访问改变量。[/size]
[size=12pt](2)[/size][size=12pt]如果使用的内联函数是在[/size][size=12pt].cpp[/size][size=12pt]文件内定义的,而不是在头文件内定义将导致[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt](3)[/size][size=12pt]调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt](4)[/size][size=12pt]试图从基类的构造函数或析构函数中调用虚拟函数时将会导致[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt](5)[/size][size=12pt]要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt]<2>[/size][size=12pt]由于编译和联机的设置而造成的[/size][size=12pt]LNK2001[/size][size=12pt]错误[/size]
[size=12pt](1)[/size][size=12pt]如果编译时使用的是[/size][size=12pt]/NOD(/NODERAULTLIB)[/size][size=12pt]选项,程序所需要的运行库和[/size][size=12pt]MFC[/size][size=12pt]时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。这种情况下使用[/size][size=12pt]/NOD[/size][size=12pt]将导致[/size][size=12pt]LNK2001[/size][size=12pt]错误[/size]
[size=12pt](2)[/size][size=12pt]如果没有为[/size][size=12pt]wWinMainCRTStartup[/size][size=12pt]设定程序入口,在使用[/size][size=12pt]Unicode[/size][size=12pt]和[/size][size=12pt]MFC[/size][size=12pt]时将出现[/size][size=12pt]“unresolved external on _WinMain@16”[/size][size=12pt]的[/size][size=12pt]LNK2001[/size][size=12pt]错误信息。[/size]
[size=12pt](3)[/size][size=12pt]使用[/size][size=12pt]/MD[/size][size=12pt]选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对[/size][size=12pt]“func”[/size][size=12pt]的引用,在目标文件里即对[/size][size=12pt]“__imp__func”[/size][size=12pt]的引用。如果试图使用静态库[/size][size=12pt]LIBC.LIB[/size][size=12pt]或[/size][size=12pt]LIBCMT.LIB[/size][size=12pt]进行链接,将在[/size][size=12pt]__imp__func[/size][size=12pt]上发生[/size][size=12pt]LNK2001[/size][size=12pt]错误。如果不使用[/size][size=12pt]/MD[/size][size=12pt]选项编译,在使用[/size][size=12pt]MSVCxx.LIB[/size][size=12pt]链接时也会发生[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt](4)[/size][size=12pt]使用[/size][size=12pt]/ML[/size][size=12pt]选项编译时,如用[/size][size=12pt]LIBCMT.LIB[/size][size=12pt]链接会在[/size][size=12pt]_errno[/size][size=12pt]上发生[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt](5)[/size][size=12pt]当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产生[/size][size=12pt]LNK2001[/size][size=12pt]错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。[/size]
[size=12pt](6)[/size][size=12pt]不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。[/size]
[size=12pt](7)[/size][size=12pt]在不同的模块中使用内联和非内联的编译选项能够导致[/size][size=12pt]LNK2001[/size][size=12pt]错误。如果创建[/size][size=12pt]C++[/size][size=12pt]库时打开了函数内联[/size][size=12pt](/Ob1[/size][size=12pt]或[/size][size=12pt]/Ob2)[/size][size=12pt],但是在描述该函数的相应头文件里却关闭了函数内联[/size][size=12pt]([/size][size=12pt]没有[/size][size=12pt]inline[/size][size=12pt]关键字[/size][size=12pt])[/size][size=12pt],只是将得到错误信息。为避免该问题的发生,应该在相应的头文件中用[/size][size=12pt]inline[/size][size=12pt]关键字标志为内联函数。[/size]
[size=12pt](8)[/size][size=12pt]不正确的[/size][size=12pt]/SUBSYSTEM[/size][size=12pt]或[/size][size=12pt]ENTRY[/size][size=12pt]设置也能导致[/size][size=12pt]LNK2001[/size][size=12pt]错误。[/size]
[size=12pt]19. [/size][size=12pt]如何调试一个没有源码的[/size][size=12pt]exe[/size][size=12pt]文件调用的[/size][size=12pt]dll[/size]
[size=12pt]在[/size][size=12pt]Visual C++ 6.0[/size][size=12pt]中,进入[/size][size=12pt]“Project Setting”[/size][size=12pt]对话框然后选择[/size][size=12pt]Debug[/size][size=12pt]标签页。通常[/size][size=12pt]Visual Studio[/size][size=12pt]默认[/size][size=12pt]“executable for debug session”[/size][size=12pt]为可执行文件名,但可以将他改成任何你想要的程序。甚至可以指定不同的工作目录以及传递参数到你的程序。这个技术常用来调试[/size][size=12pt]Dlls[/size][size=12pt]、名字空间扩展、[/size][size=12pt]COM[/size][size=12pt]对象和其他从某些[/size][size=12pt]EXE[/size][size=12pt]以及从第三方的[/size][size=12pt]EXE[/size][size=12pt]中调用的[/size][size=12pt]plug-in[/size][size=12pt]程序。[/size]
[size=12pt]20.   Visual C++ 6.0[/size][size=12pt]工程中的项目文件都表示什么[/size]
[size=12pt].opt[/size][size=12pt]:工程关于开发环境的参数文件。如工具条位置等信息。[/size]
[size=12pt].aps(AppStudio File)[/size][size=12pt]资源辅助文件,二进制格式,一般不用去管它。[/size]
[size=12pt].clw[/size][size=12pt]:[/size][size=12pt]ClassWizard[/size][size=12pt]信息文件,实际上是[/size][size=12pt]INI[/size][size=12pt]文件格式,有兴趣可以研究一下。有时候[/size][size=12pt]ClassWizard[/size][size=12pt]出了问题,手工修改[/size][size=12pt]CLW[/size][size=12pt]文件可以解决。如果此文件不存在的话,每次用[/size][size=12pt]ClassWizard[/size][size=12pt]的时候回提示是否重建。[/size]
[size=12pt].dsp(DevelopStudio Project)[/size][size=12pt]:项目文件,文本格式,不过不熟悉的不要手工修改。[/size]
[size=12pt].dsw(DevelopStudio Workspace)[/size][size=12pt]:是工作区文件,其他特点和[/size][size=12pt].dsp[/size][size=12pt]差不多。[/size]
[size=12pt].plg[/size][size=12pt]:是编译信息文件,编译时的[/size][size=12pt]error[/size][size=12pt]和[/size][size=12pt]warning[/size][size=12pt]信息文件[/size][size=12pt]([/size][size=12pt]实际上是一个[/size][size=12pt]html[/size][size=12pt]文件[/size][size=12pt])[/size][size=12pt],一般用处不大。在单击菜单【[/size][size=12pt]Tool[/size][size=12pt]】-[/size][size=12pt]>[/size][size=12pt]【[/size][size=12pt]Option[/size][size=12pt]】弹出的对话框里面有个选项可以控制这个文件的生成。[/size]
[size=12pt].hpj(Help Project)[/size][size=12pt]:是生成帮助文件的工程,用[/size][size=12pt]microsoft Help Compiler[/size][size=12pt]可以处理。[/size]
[size=12pt].mdp(Microsoft DevStudio Project)[/size][size=12pt]:是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的[/size][size=12pt].dsp[/size][size=12pt]格式。[/size]
[size=12pt].bsc[/size][size=12pt]:是用于浏览项目信息的,如果用[/size][size=12pt]Source Brower[/size][size=12pt]的话就必须有这个文件。如果不用这个功能的话,可以在[/size][size=12pt]Project Options[/size][size=12pt]里面去掉[/size][size=12pt]Generate Browse Info File[/size][size=12pt],这样可以加快编译速度。[/size]
[size=12pt].map[/size][size=12pt]是执行文件的映象信息记录文件,除非对系统底层,这个文件一般用不着。[/size]
[size=12pt].pch(Pre-Compiled File)[/size][size=12pt]:是与编译文件,可以加快编译速度,但是文件非常大。[/size]
[size=12pt].pdb(Program Database)[/size][size=12pt]:记录了程序有关的一些数据和调试信息,在调试的时候可能有用。[/size]
[size=12pt].exp[/size][size=12pt]:只有在编译[/size][size=12pt]DLL[/size][size=12pt]的时候才会生成,记录了[/size][size=12pt]DLL[/size][size=12pt]文件的一些信息,一般也没有用。[/size]
[size=12pt].ncb[/size][size=12pt]:无编译浏览文件[/size][size=12pt](no compile browser)[/size][size=12pt]。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。[/size]
页: [1]
查看完整版本: Visual C++开发工具与调试技巧整理
查看完整版本: Visual C++开发工具与调试技巧整理