2 void main() /*主函数main*/
3 {
4 float a,局桐圆b; /*定义两浮点型变轮模量a,b*/
5 a=123456.789e5 /*给a赋值*/
6 b=a+20 /桐塌*给b运算赋值*/
7 printf("%f\n,b); /*输出b*/
8 }
第5,6行少了;
自己做函数,比如char PeekCodeChar(void *Addr)、int PeekCodeInt(void *Addr)之类的,内部实现则用汇编来实现,C主体程序在需要的时候调用这些函数就舒服多了。阅读源代码的第一个工具,就是你手中的code base。把它编译出来,运行它,加log,试着修改一些数据和代码,看看有什么变化。第二个重要的工具就是debugger,而debugger最重要的功能是获取call stack。在你感兴趣的use case里pause一下,在你不知道有什么用的函数里加个断点,显示出来的call stack都能让你对系统有更清晰的认识。
一顷神锋个软件系统就是一个小宇宙。别期待有什么高明的文档。要把自己当成探求自然真理的物理学家。
必须找好切入点。你要解决什么问题。是要fix bug;还是要把这个系统和其它模块集成;还是要增加新功能。物理学家没有上来就研究雀晌整个宇宙的,必须选好分支。
如果你有一个猜想,但是又和你的目标关联不太大,那就坚持这个猜想,直到出现明显反例。物理学有瞎嫌很多这样的例子,和数学不同,为了旁支猜想投入过多研究是不明智的。
如果有明显证据证明你的某个旁支猜想大错特错,你就要放弃主要目标,暂时把解决旁支猜想作为主要目标。比如,你本来以为某个结构是LRU的cache,结果发现怎么做都不对,那就先放弃原来的目标,专门研究这个结构的用途。
对于旁支猜想的不断切换,要做好自己的task stack保留。在旁支猜想解决之后,要根据结论尽快回到上次中断的任务。
复杂的软件系统更像一个动物,待久了你会了解它的脾性。有些是通过逻辑,有些是通过感觉。玩车的尚且有这种感觉,我们玩的东西比车复杂上万倍,就更不能对它缺乏感情投入。(这也是我不爱做企业开发的原因,我不爱养个爬行类当宠物,还是猫猫狗狗的亲切。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)