﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-划过天际的流星</title><link>http://www.cppblog.com/fishhit/</link><description>一起来讨论技术吧</description><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2026 05:38:25 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2026 05:38:25 GMT</pubDate><ttl>60</ttl><item><title>惭愧啊！</title><link>http://www.cppblog.com/fishhit/archive/2007/12/17/38816.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Mon, 17 Dec 2007 13:51:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/12/17/38816.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/38816.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/12/17/38816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/38816.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/38816.html</trackback:ping><description><![CDATA[很久没来写东西了，这个博客我觉得还是要开下去，为什么要选择这里呢？关键就是要督促自己前进，不可以再浪费时间了，这段时间事情似乎进行的不是很顺利，具体过程就不说了，现在接下来要完成的事情主要列了一下有以下几个：<br>1 在这周末完成小老板的一个总结，涉及6个方面的数据库的建立<br>2 完成下周四的一个lecture~这个东西主要就涉及的我课题了，应该还好搞定<br>3&nbsp; 完成单词的复习，陆陆续续的背了过半的单词，可惜忘记了很多，要把前面的很多东西重新得捡起来，这个可不是一件容易的事情，背单词对于我是最痛苦的活了！`<br><br><br>好了就说那么多了，大家周一愉快！~<br>
<img src ="http://www.cppblog.com/fishhit/aggbug/38816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-12-17 21:51 <a href="http://www.cppblog.com/fishhit/archive/2007/12/17/38816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软的项目真是痛心啊</title><link>http://www.cppblog.com/fishhit/archive/2007/07/01/27326.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Sun, 01 Jul 2007 09:10:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/07/01/27326.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/27326.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/07/01/27326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/27326.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/27326.html</trackback:ping><description><![CDATA[那么多项目放弃的，最过分的个校园导航都能放弃，这个项目居然也能批下来，更郁闷的是居然结果是放弃，真是一群废人，败自己的时间，败学校的名声（哎，是校本部的白痴），败鬼子的钱（虽然我比较痛恨鬼子，但也不支持这样败）！！
<img src ="http://www.cppblog.com/fishhit/aggbug/27326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-07-01 17:10 <a href="http://www.cppblog.com/fishhit/archive/2007/07/01/27326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这段时间</title><link>http://www.cppblog.com/fishhit/archive/2007/07/01/27325.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Sun, 01 Jul 2007 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/07/01/27325.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/27325.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/07/01/27325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/27325.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/27325.html</trackback:ping><description><![CDATA[恩恩，消失了几天没写博，各种各种原因，最近忙完了2篇项目创意，帮老婆搞定论文了，现在在写英文翻译，最近还有篮球赛，一团乱，对了，今天还考了英语，真是靠啊，这是英语么？今天早上看了半个小时就去了，考的啥也不说了，但也死不了，坐在徐东东旁边，看他也是抓耳挠腮的，彼此彼此
<img src ="http://www.cppblog.com/fishhit/aggbug/27325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-07-01 17:02 <a href="http://www.cppblog.com/fishhit/archive/2007/07/01/27325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于文本转化问题</title><link>http://www.cppblog.com/fishhit/archive/2007/06/20/26670.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Tue, 19 Jun 2007 18:27:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/20/26670.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26670.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/20/26670.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26670.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26670.html</trackback:ping><description><![CDATA[lp的论文，巨痛苦，居然还想让我打30多页，天啊，杀了我吧，我从小到大没干过这民工活，废话少说，说说这几天的我的研究：<br>1 如果碰上巨傻x而且混蛋的论文作者，把字弄成了图像，不要慌，我不会让你打字的，我告诉你，用汉王文本王文文豪7600专业版，用屏幕识别，把图像开到最大，最好全屏，这直接影响你后面的识别率的高低，别说我没告诉你！！！！！！然后抓图点识别就ok了，唯一麻烦的就是要一段一段来，不能批量，中文识别率高达95%（数学符号就是一大串乱码），我亲自测试了，不要小看几句话！！！这是惨痛的经验教训，作为秘方流传吧！！！在此强烈bs卡卡等一帮人，狂打击偶的自信，我说了肯定能拿下的！！！！！！老子的话还能错么？<br>2 pdf的转化问题，碰上傻x的图像就认命吧，慢慢用上面的方法抓图识别吧~~唉，我也想改成批量处理，让我再研究几天<br>3 pdf上可以截取文本的情况，数学符号无法转化为word，那真毛办法了，我现在也是手打！！不过我认为可以转化，可能需要添加识别的字库之类的！！！！<br><br>到此为止，需要软件的可以找我要，是破解的汉王！！
<img src ="http://www.cppblog.com/fishhit/aggbug/26670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-20 02:27 <a href="http://www.cppblog.com/fishhit/archive/2007/06/20/26670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近在看数字图像处理</title><link>http://www.cppblog.com/fishhit/archive/2007/06/15/26397.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Fri, 15 Jun 2007 12:50:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/15/26397.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26397.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/15/26397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26397.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26397.html</trackback:ping><description><![CDATA[<p>鸟文版，剧痛苦，幸好有本电子版中文，老大的课，没选也得好好学，要不然被落下话柄咋办？苦命啊，昨天晚上用作弊器打的师兄嗷嗷叫，不能怪我，谁让他们3vs1呢，据说仿佛他们也是作弊器，用吧用吧，只要你们觉的很爽就可以了，</p>
<img src ="http://www.cppblog.com/fishhit/aggbug/26397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-15 20:50 <a href="http://www.cppblog.com/fishhit/archive/2007/06/15/26397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于英语考试</title><link>http://www.cppblog.com/fishhit/archive/2007/06/14/26300.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Thu, 14 Jun 2007 04:12:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/14/26300.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26300.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/14/26300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26300.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26300.html</trackback:ping><description><![CDATA[很帅的站在上面，幸好没有很帅的跟老师说：i am sorry!!!<br>很不幸，我居然是缺课排第二的人，大家一起bs我吧！！！<img height=20 src="http://www.cppblog.com/Emoticons/QQ/cold.gif" width=20 border=0>我真的缺了那么多么？
<img src ="http://www.cppblog.com/fishhit/aggbug/26300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-14 12:12 <a href="http://www.cppblog.com/fishhit/archive/2007/06/14/26300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应该看看的东西</title><link>http://www.cppblog.com/fishhit/archive/2007/06/12/26195.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Tue, 12 Jun 2007 11:23:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/12/26195.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26195.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/12/26195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26195.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26195.html</trackback:ping><description><![CDATA[<p><a href="http://player.youku.com/player.php/sid/XNDUwNzg0NA==/v.swf">http://player.youku.com/player.php/sid/XNDUwNzg0NA==/v.swf</a></p>
<img src ="http://www.cppblog.com/fishhit/aggbug/26195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-12 19:23 <a href="http://www.cppblog.com/fishhit/archive/2007/06/12/26195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个调试的网站</title><link>http://www.cppblog.com/fishhit/archive/2007/06/12/26182.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Tue, 12 Jun 2007 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/12/26182.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26182.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/12/26182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26182.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26182.html</trackback:ping><description><![CDATA[<a href="http://www.vckbase.com/">http://www.vckbase.com/</a>
<img src ="http://www.cppblog.com/fishhit/aggbug/26182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-12 17:15 <a href="http://www.cppblog.com/fishhit/archive/2007/06/12/26182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC调试入门 </title><link>http://www.cppblog.com/fishhit/archive/2007/06/12/26180.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Tue, 12 Jun 2007 09:12:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/12/26180.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26180.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/12/26180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26180.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26180.html</trackback:ping><description><![CDATA[<div class=postTitle><a class=postTitle2 id=viewpost1_TitleUrl href="http://www.cppblog.com/3522021224/archive/2007/06/07/25778.html"><u><font color=#0000ff>VC调试入门</font></u></a> </div>
<img src="http://www.vckbase.com/document/image/paragraph.gif"> 概述<br>调试是一个程序员最基本的技能，其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言，却不能编制出任何好的软件。<br>这里我简要的根据自己的经验列出调试中比较常用的技巧，希望对大家有用。<br>本文约定，在选择菜单时，通过/表示分级菜单，例如File/Open表示顶级菜单File的子菜单Open。<br>&nbsp;<br><img src="http://www.vckbase.com/document/image/paragraph.gif"> 设置<br>为了调试一个程序，首先必须使程序中包含调试信息。一般情况下，一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息，但是是不是Debug版本并不是程序包含调试信息的决定因素，程序设计者可以在任意的Configuration中增加调试信息，包括Release版本。<br>为了增加调试信息，可以按照下述步骤进行：
<ul>
    <li>打开Project settings对话框（可以通过快捷键ALT+F7打开，也可以通过IDE菜单Project/Settings打开)
    <li>选择C/C++页，Category中选择general ，则出现一个Debug Info下拉列表框，可供选择的调试信息 方式包括： <br>　
    <table id=AutoNumber1 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width=614 border=1>
        <tbody>
            <tr>
                <td align=middle width=56><strong>命令行</strong></td>
                <td align=middle width=160><strong>Project settings</strong></td>
                <td align=middle width=394><strong>说明</strong></td>
            </tr>
            <tr>
                <td width=56>无</td>
                <td width=160>None</td>
                <td width=394>没有调试信息</td>
            </tr>
            <tr>
                <td width=56>/Zd</td>
                <td width=160>Line Numbers Only</td>
                <td width=394>目标文件或者可执行文件中只包含全局和导出符号以及代码行信息，不包含符号调试信息</td>
            </tr>
            <tr>
                <td width=56>/Z7</td>
                <td width=160>C 7.0- Compatible</td>
                <td width=394>目标文件或者可执行文件中包含行号和所有符号调试信息，包括变量名及类型，函数及原型等</td>
            </tr>
            <tr>
                <td width=56>/Zi</td>
                <td width=160>Program Database</td>
                <td width=394>创建一个程序库(PDB)，包括类型信息和符号调试信息。</td>
            </tr>
            <tr>
                <td width=56>/ZI</td>
                <td width=160>Program Database for Edit and Continue</td>
                <td width=394>除了前面/Zi的功能外，这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效</td>
            </tr>
        </tbody>
    </table>
    <br>
    <li>选择Link页，选中复选框"Generate Debug Info"，这个选项将使连接器把调试信息写进可执行文件和DLL
    <li>如果C/C++页中设置了Program Database以上的选项，则Link incrementally可以选择。选中这个选项，将使程序可以在上一次编译的基础上被编译（即增量编译），而不必每次都从头开始编译。 </li>
</ul>
<img src="http://www.vckbase.com/document/image/paragraph.gif"> 断点<br>断点是调试器设置的一个代码位置。当程序运行到断点时，程序中断执行，回到调试器。断点是 最常用的技巧。调试时，只有设置了断点并使程序回到调试器，才能对程序进行在线调试。<br><br>设置断点：可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上，然后
<ul>
    <li>按F9快捷键
    <li>弹出Breakpoints对话框，方法是按快捷键CTRL+B或ALT+F9，或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头，选择 合适的位置信息。一般情况下，直接选择line xxx就足够了，如果想设置不是当前位置的断点，可以选择Advanced，然后填写函数、行号和可执行文件信息。 </li>
</ul>
去掉断点：把光标移动到给定断点所在的行，再次按F9就可以取消断点。同前面所述，打开Breakpoints对话框后，也可以按照界面提示去掉断点。<br><br>条件断点：可以为断点设置一个条件，这样的断点称为条件断点。对于新加的断点，可以单击Conditions按钮，为断点设置一个表达式。当这个表达式发生改变时，程序就 被中断。底下设置包括&#8220;观察数组或者结构的元素个数&#8221;，似乎可以设置一个指针所指向的内存区的大小，但是我设置一个比较的值但是改动 范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。<br><br>数据断点：数据断点只能在Breakpoints对话框中设置。选择&#8220;Data&#8221;页，就显示了设置数据断点的对话框。在编辑框中输入一个表达式，当这个 表达式的值发生变化时，数据断点就到达。一般情况下，这个表达式应该由运算符和全局变量构成，例如：在编辑框中输入 g_bFlag这个全局变量的名字，那么当程序中有g_bFlag= !g_bFlag时，程序就将停在这个语句处。<br><br>消息断点：VC也支持对Windows消息进行截获。他有两种方式进行截获：窗口消息处理函数和特定消息中断。<br>在Breakpoints对话框中选择Messages页，就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字，那么 每次消息被这个函数处理，断点就到达（我觉得如果采用普通断点在这个函数中截获，效果应该一样）。如果在底下的下拉 列表框选择一个消息，则每次这种消息到达，程序就中断。<br><br><img src="http://www.vckbase.com/document/image/paragraph.gif"> 值<br><strong>Watch</strong><br>VC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。<br>观看变量的值最简单，当断点到达时，把光标移动到这个变量上，停留一会就可以看到变量的值。<br>VC提供一种被成为Watch的机制来观看变量和表达式的值。在断点状态下，在变量上单击右键，选择Quick Watch， 就弹出一个对话框，显示这个变量的值。<br>单击Debug工具条上的Watch按钮，就出现一个Watch视图（Watch1,Watch2,Watch3,Watch4），在该视图中输入变量或者表达式，就可以观察 变量或者表达式的值。注意：这个表达式不能有副作用，例如++运算符绝对禁止用于这个表达式中，因为这个运算符将修改变量的值，导致 软件的逻辑被破坏。<br><br><strong>Memory</strong><br>由于指针指向的数组，Watch只能显示第一个元素的值。为了显示数组的后续内容，或者要显示一片内存的内容，可以使用memory功能。在 Debug工具条上点memory按钮，就弹出一个对话框，在其中输入地址，就可以显示该地址指向的内存的内容。<strong><br><br>Varibles</strong><br>Debug工具条上的Varibles按钮弹出一个框，显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量，以红色显示。<br><br><strong>寄存器</strong><br>Debug工具条上的Reigsters按钮弹出一个框，显示当前的所有寄存器的值。<br><br><img src="http://www.vckbase.com/document/image/paragraph.gif"> 进程控制<br>VC允许被中断的程序继续运行、单步运行和运行到指定光标处，分别对应快捷键F5、F10/F11和CTRL+F10。各个快捷键功能如下： <br>　
<table id=AutoNumber2 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="91%" border=1>
    <tbody>
        <tr>
            <td align=middle width="30%"><strong>快捷键</strong></td>
            <td align=middle width="70%"><strong>说明</strong></td>
        </tr>
        <tr>
            <td align=middle width="30%">F5</td>
            <td width="70%">继续运行</td>
        </tr>
        <tr>
            <td align=middle width="30%">F10</td>
            <td width="70%">单步，如果涉及到子函数，不进入子函数内部</td>
        </tr>
        <tr>
            <td align=middle width="30%">F11</td>
            <td width="70%">单步，如果涉及到子函数，进入子函数内部</td>
        </tr>
        <tr>
            <td align=middle width="30%">CTRL+F10</td>
            <td width="70%">运行到当前光标处。</td>
        </tr>
    </tbody>
</table>
<p><img src="http://www.vckbase.com/document/image/paragraph.gif"> Call Stack<br>调用堆栈反映了当前断点处函数是被那些函数按照什么顺序调用的。单击Debug工具条上的Call stack就显示Call Stack对话框。在CallStack对话框中显示了一个调用系列，最上面的是当前函数，往下依次是调用函数的上级函数。单击这些函数名可以跳到对应的函数中去。<br><br><img src="http://www.vckbase.com/document/image/paragraph.gif"> 其他调试手段<br>系统提供一系列特殊的函数或者宏来处理Debug版本相关的信息，如下： </p>
<table id=AutoNumber3 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="86%" border=1>
    <tbody>
        <tr>
            <td align=middle width="42%"><strong>宏名/函数名</strong></td>
            <td align=middle width="58%"><strong>说明</strong></td>
        </tr>
        <tr>
            <td align=middle width="42%">TRACE</td>
            <td width="58%">使用方法和printf完全一致，他在output框中输出调试信息</td>
        </tr>
        <tr>
            <td align=middle width="42%">ASSERT</td>
            <td width="58%">它接收一个表达式，如果这个表达式为TRUE，则无动作，否则中断当前程序执行。对于系统中出现这个宏 导致的中断，应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如，对于一个还没有创建的窗口调用SetWindowText等。</td>
        </tr>
        <tr>
            <td align=middle width="42%">VERIFY</td>
            <td width="58%">和ASSERT功能类似，所不同的是，在Release版本中，ASSERT不计算输入的表达式的值，而VERIFY计算表达式的值。</td>
        </tr>
    </tbody>
</table>
<p><img src="http://www.vckbase.com/document/image/paragraph.gif"> 关注<br>一个好的程序员不应该把所有的判断交给编译器和调试器，应该在程序中自己加以程序保护和错误定位，具体措施包括：
<ul>
    <li>对于所有有返回值的函数，都应该检查返回值，除非你确信这个函数调用绝对不会出错，或者不关心它是否出错。
    <li>一些函数返回错误，需要用其他函数获得错误的具体信息。例如accept返回INVALID_SOCKET表示accept失败，为了查明 具体的失败原因，应该立刻用WSAGetLastError获得错误码，并针对性的解决问题。
    <li>有些函数通过异常机制抛出错误，应该用TRY-CATCH语句来检查错误
    <li>程序员对于能处理的错误，应该自己在底层处理，对于不能处理的，应该报告给用户让他们决定怎么处理。如果程序出了异常， 却不对返回值和其他机制返回的错误信息进行判断，只能是加大了找错误的难度。 </li>
</ul>
另外：VC中要编制程序不应该一开始就写cpp/h文件，而应该首先创建一个合适的工程。因为只有这样，VC才能选择合适的编译、连接 选项。对于加入到工程中的cpp文件，应该检查是否在第一行显式的包含stdafx.h头文件，这是Microsoft Visual Studio为了加快编译 速度而设置的预编译头文件。在这个#include "stdafx.h"行前面的所有代码将被忽略，所以其他头文件应该在这一行后面被包含。<br>对于.c文件，由于不能包含stdafx.h，因此可以通过Project settings把它的预编译头设置为&#8220;不使用&#8221;，方法是：
<ul>
    <li>弹出Project settings对话框
    <li>选择C/C++
    <li>Category选择Precompilation Header
    <li>选择不使用预编译头。 </li>
</ul>
<img src ="http://www.cppblog.com/fishhit/aggbug/26180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-12 17:12 <a href="http://www.cppblog.com/fishhit/archive/2007/06/12/26180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC调试进阶(1) zz</title><link>http://www.cppblog.com/fishhit/archive/2007/06/12/26170.html</link><dc:creator>Fish</dc:creator><author>Fish</author><pubDate>Tue, 12 Jun 2007 08:45:00 GMT</pubDate><guid>http://www.cppblog.com/fishhit/archive/2007/06/12/26170.html</guid><wfw:comment>http://www.cppblog.com/fishhit/comments/26170.html</wfw:comment><comments>http://www.cppblog.com/fishhit/archive/2007/06/12/26170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fishhit/comments/commentRss/26170.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fishhit/services/trackbacks/26170.html</trackback:ping><description><![CDATA[<div class=postTitle><a class=postTitle2 id=viewpost1_TitleUrl href="http://www.cppblog.com/3522021224/archive/2007/06/12/26145.html"><u><font color=#800080>VC调试进阶(1)</font></u></a> </div>
<div class=postText>
<p>vc的调试，可以参考如下：<br>检测程序中的括号是否匹配<br>把光标移动到需要检测的括号（如大括号{}、方括号[]、圆括号（）和尖括号&lt;&gt;）前面，键入快<br>捷键&#8220;Ctrl＋]&#8221;。如果括号匹配正确，光标就跳到匹配的括号处，否则光标不移动，并且机箱喇叭<br>还会发出一声警告声。 </p>
<p>2.查看一个宏（或变量、函数）的宏定义 </p>
<p>把光标移动到你想知道的一个宏上，就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键<br>菜单中的Go To Defition Of &#8230;),如果没有建立Browse files，会出现提示对话框，确定，然后就<br>会跳到定义那些东西的地方。 </p>
<p>3.格式化一段乱七八糟的源代码 </p>
<p>选中那段源代码，按ATL+F8。 </p>
<p>4.在编辑状态下发现成员变量或函数不能显示 </p>
<p>删除该项目扩展名为.ncb文件，重新打开该项目。 </p>
<p>5.如何整理ClassView视图中大量的类 </p>
<p>可以在classview 视图中右键新建文件夹（new folder），再把具有相近性质的类拖到对应的文件<br>夹中，使整个视图看上去清晰明了. </p>
<p>6.定位预处理指定 </p>
<p>在源文件中定位光标到对称的#if, #endif,使用Ctrl+K. </p>
<p>7.如何添加系统中Lib到当前项目 </p>
<p>在Project | Settings | Link | Object/library modules：输入Lib名称，不同的Lib之间用空<br>格格开. </p>
<p>8.如何添加系统中的头文件(.h)到当前项目. </p>
<p>#include &lt;FileName.h&gt;,告诉编译到VC系统目录去找;使用#include "FileName.h"，告诉编译在当<br>前目录找. </p>
<p>9.如何在Studio使用汇编调试 </p>
<p>在WorkBench的Debugger状态下按CTRL+F7. </p>
<p>10.怎样处理ClassZiard找不到的系统消息 </p>
<p>如果要在ClassWizard中处理WM_NCHITTEST等系统消息，请在ClassWizard中Class Info页中将<br>Message filter改为Window就有了. </p>
<p>11.如何干净的删除一个类 </p>
<p>先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目，从实际的文件夹中删除<br>对应的.h和.cpp文件与.clw文件。 </p>
<p>12.如果让控制台应用程序支持mfc类库 </p>
<p>可以在控制台应用程序中include 来引入mfc库，但是控制台应用程序缺省是单线程的，mfc是多<br>线程的，为解决该矛盾，在project setting-&gt;c/c++ 选项，选择code generation,<br>在use run-time library 下拉框中选择debug multithread。 </p>
<p>13.如何汉化只有可执行代码的.exe 文件 </p>
<p>在nt 下利用vc open file 以resources方式打开*.exe 文件，直接修改资源文件，然后保存即可。 </p>
<p>附：VC项目文件说明 </p>
<p>.opt 工程关于开发环境的参数文件。如工具条位置等信息； <br>.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他. <br>.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出<br>&nbsp;&nbsp;&nbsp;&nbsp; 问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你<br>&nbsp;&nbsp;&nbsp;&nbsp; 是否重建. <br>.dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW<br>&nbsp;&nbsp;&nbsp;&nbsp; (DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多. <br>.plg 是编译信息文件,编译时的error和warning信息文件（实际上是一个html文件）,一般用<br>&nbsp;&nbsp;&nbsp;&nbsp; 处不大.在Tools-&gt;Options里面有个选项可以控制这个文件的生成. <br>.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理. <br>.mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否<br>&nbsp;&nbsp;&nbsp;&nbsp; 转换成新的DSP格式. <br>.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,<br>&nbsp;&nbsp;&nbsp;&nbsp; 可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度. <br>.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着. <br>.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大. <br>.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用. <br>.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用. <br>.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后<br>&nbsp;&nbsp;&nbsp;&nbsp; 会自动生成。</p>
</div>
<img src ="http://www.cppblog.com/fishhit/aggbug/26170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fishhit/" target="_blank">Fish</a> 2007-06-12 16:45 <a href="http://www.cppblog.com/fishhit/archive/2007/06/12/26170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>