请教:怎样读VC源码

inforum 2003-08-22 01:28:33
本人是初级水平,觉得VC源码不象C、VB、Delphi那样好读,后者只要调试一遍就能对程序的架构有个大体的了解。你们调试一般在哪里设断点?AfxWinMain里吗?

怎样读VC源码?欢迎发表你的意见。
...全文
106 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxq80 2003-08-25
  • 打赏
  • 举报
回复
如何分析一个开放源代码的项目

开放源代码的项目,通常都是不完整的,就是说:只有源代码,没有完整的产品使用说明书,没有软件开发过程中的完整文档,源码中的注释也很少。之所以会这样,可能是因为作者们有所保留,只开放源码,不开放关键的文档和设计思路,还可能是因为作者们都是旧派的程序狂人,不重视软件工程和文档。
那我们该怎么办呢?
只有一条路,就是自己动手来补齐缺少的所有关键文档。
补齐项目的文档,跟开发一个新项目有所不同,因为项目的源码已经编写完成了,所以,这是一个相反的分析设计过程。
下面就具体说说该怎么办:
1.一个开放源代码的项目,总得带有一点说明吧,这就是最初的线索。即使是几句话,也很重要。
2.下载了源码之后,就应该开始编译源码了,这时候,就应该编写一个“源码编译方法”文档。这个文档很重要,因为如果源码没法编译,就是废物一堆,毫无价值。
“源码编译方法”文档,应该标明:
操作系统版本,获取的方法。(获取的方法通常是:从某某网址下载,从科技市场购买,保存在自己的那张光盘中)
操作系统补丁的版本,获取的方法。
编译工具版本,获取的方法。
编译工具补丁的版本,获取的方法。
第三方工具的版本,获取的方法。
编译环境的设置方法,例如VC的Include路径,库文件路径,这些地方虽然都是小问题,但是,弄不好,就无法编译通过。
有时候,源码也需要修改,因为作者不一定是中国的,所以,源码中的字符串可能会变成乱码,所以,必须要改一下。还有,因为语言的不同,可能也需要改一改。
3.源码编译通过了之后,就要开始研究使用程序的方法了。有的程序很容易使用,有的就不行了,很难使用。要写出“产品用途和功能的介绍”和“产品使用方法说明书”。写这两个说明书,一个重要的目的是 分析软件产品的需求。产品需求就相当于“客户给你出的一个题目”。
4.需求搞好了之后,你可以先自己想一想这种需求该怎么实现?你自己能不能搞出来?这就是一个解题的过程。
如果你自己解不出来,就可以看看答案了,就是看源码了。
现在开始正式分析源码,怎么分析?当然是根据产品的使用方法,来跟踪流程了。由于“产品使用方法说明书”已经有了,所以,源代码就很容易理解了,可以往产品的功能上靠。当然了,有时候产品的功能和使用方法无法事先分析清楚,这时候,就需要边看代码,办猜测软件的功能和使用方法了,这样做很累的,是没办法的办法了。
看源码的时候,应该同时编辑着两个文档“程序总体结构报告”(包含 程序流程图)和“源码分析报告”。前者是用来获取程序的总体结构用的,后者,是一个笔记本,记录中源码分析过程中遇到的所有的难题,源码阅读到什么地方了,阅读源码过程中的感想,获得的启示,重大的发现等等。需要强调的是,“程序总体结构报告”这个文档相当重要,特别是项目比较大、代码比较多的时候,这个文档就显得尤为重要,否则,你可能就会在无数行的代码当中迷失了方向。很多程序员的通病就是太注重细节,却忽视程序的总体结构,这就导致了阅读源码的速度很低,思路不清,不容易抓住重点。所以,一定要重视对“程序总体结构”的分析,要从细节的纠缠中解脱出来。虽然细节问题很重要,但是,“程序总体结构”更重要。
在“程序总体结构报告”中,“程序流程图”是最重要的部分。对于不太大的项目,只需要一个“程序流程图”就够了。
“程序流程图”最好用Visio绘制,这个工具非常好用。如果没有这个东西,用Word或其它的绘图工具也可。


stcrane1228 2003-08-25
  • 打赏
  • 举报
回复
学习ing
duyhui 2003-08-25
  • 打赏
  • 举报
回复
要了解windows编程的一些知识,再熟悉C++,再看VC就不是很困难了!
inforum 2003-08-25
  • 打赏
  • 举报
回复
谢谢大家
brainf 2003-08-22
  • 打赏
  • 举报
回复
恩!先要搞懂 MFC ,在研究!
3jaja 2003-08-22
  • 打赏
  • 举报
回复
首先知道程序在干什么。理会其实现的方法。ok
ruihuahan 2003-08-22
  • 打赏
  • 举报
回复
先要对MFC Application Frame有一个大概的了解,然后再读VC++源码。
lplpzhuzhu 2003-08-22
  • 打赏
  • 举报
回复
从入口点开始单步调试
遇到不明白的函数就F11
zhouyong0371 2003-08-22
  • 打赏
  • 举报
回复
熟悉MFC框架,熟悉消息映射。
在相应的消息响应函数里边设断点
EmailTan 2003-08-22
  • 打赏
  • 举报
回复
先调试几遍弄清框架和流程,再分析各个类之间的关系,然后再看代码的实现部分
MajorVon 2003-08-22
  • 打赏
  • 举报
回复
看看《深入浅出MFC》
hydcumt 2003-08-22
  • 打赏
  • 举报
回复
我认为首先要了解一个C++程序的一般性构造,然后在看看MSDN中MFC类
lily_lee80 2003-08-22
  • 打赏
  • 举报
回复
其实是一样的沙,调试就是在你想知道具体内容的地方设置断点就行了啥!
读程序吗?可以先读主要框架,在读各个类,分析他们的关系,就行了。
当然还有一种方法就是,一个功能一个功能的读,从功能的开始读到该功能的结束,再读下一个。
akun 2003-08-22
  • 打赏
  • 举报
回复
c++的话,先分析一下有哪些类,各个类之间的关系是什么,然后再看代码的细节部分....
wxfjb 2003-08-22
  • 打赏
  • 举报
回复
搞清各个类的功能,然后就很容易了。
不过这也和你所读的代码的编写水平有关系,有些人编的程序实在是让人受不了
wuchuncai 2003-08-22
  • 打赏
  • 举报
回复
vc一般是事件响应,流程不是很确定。
不要全读。
只读想了解的部分。可以读一个一个的函数

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧