C语言及C++基础知识.docx
《C语言及C++基础知识.docx》由会员分享,可在线阅读,更多相关《C语言及C++基础知识.docx(71页珍藏版)》请在冰豆网上搜索。
C语言及C++基础知识
C语言及C++基础知识
编程及C/C++初学者FAQ
本文原为本人在论坛所发若干帖,意在集中解决新手学习C/C++语言时将遭遇到的各类问题,网友反馈情况良好,集合修订后作为个人作品贴于此处。
本贴主要分析概念原理和解决方案,不讨论具体程序语法,立足于让初学者能运行起第一个程序。
其他事宜如解释入门语法等本文基本不涉及。
本文依照创作公用约定(署名-非派生作品-非商业用途)发布。
作者(即本人)无更新计划,请勿与作者联系。
作者:
碧蓝右耳。
联系方式:
BlueAuris@
版本号:
3.0
完成日期:
2008-03-10
目录
一、开始之前
FAQ那是什么
为何有这篇FAQ
编程为何物
如果这就是编程,那语言是怎么回事
我为啥要学编程
听说编程很难,是真的么,那我能学会吗?
我真的可以么
还一定要有台电脑么
好吧你说服我了,我打算开始,该怎么做
那么,下一步怎么干
我碰到问题了,谁能帮我
我能看懂别人的程序,但自己做就觉得无从下手,怎么会这样
我英语\XX不会,咋办
关于态度、情绪和其他
二、选择C/C++语言
C语言是什么
C++语言是什么
为何要选择纯C
C/C++语言和其他语言有什么关系
我为什么要学C/C++语言
Python语言作者的另一推荐
三、一些重要的概念-----计算机原理
编程的对象是什么————计算机
程序到底是怎么回事————是操作而不是结果
为什么要编程————因为机器的特点
你们老是提到编译器,那是什么-----代码翻译机
给我解释下啥叫编程语言————各路江湖武功
语言之后要确定的事情------操作系统和平台
编程时什么东西最重要----源代码
我的程序和一般的程序不一样,什么原因————控制台和图形界面的差异
好像不能建立一个单独的文件来编译————工程和项目的问题
难道一切都要从头干起————函数、API、类、控件、开发包与软件复用
关于图形库的补充说明--------可选择的图形库
四、教材、习题和示例
能推荐几本好书么
首先是纯C的教材
然后是C++的教材
接下来是Windows编程
Unix/Linux/BSD系统
数据结构和算法
各种图形以及其它库
软件工程思想
找书的诀窍
光看书似乎不解决问题,难道要做题
OJ是什么
哪里有可用的OJ
哪里有代码示例可看
五、选择编译器
有哪些编译器可用
还有些可以配合编译器的开发环境
他们在哪里
怎么安装他们----特别解释MingW版GCC的安装
六、TC下常见的问题解决
用TC创建第一个程序
TC的库路径设置
TC下的图形编程设置
我的程序在TC下可以编译,在VC/GCC下为什么出错
七、其它编译器问题
用VC创建程序
用DEV-CPP创建程序
用MingW创建程序
用Lcc-win32创建程序
八、结束语
程序员成长的六个阶段
=========================================分割线================================
一、开始之前
FAQ那是什么
FAQ就是FrequentlyAskedQuestions,也就是常见问题解答。
这玩意儿通常是一些所谓的高手或者前辈为了节省回答新手的大量简单重复问题所耗费的时间精力而采用的一种偷懒手法。
一旦完成,高手只要一努嘴,“看FAQ去”就万事大吉了。
实在是居家旅行杀人越货之必备良药,因此在各大论坛已经有大泛滥的趋势。
本篇FAQ为学习C语言、C++语言的大量新手编写,重点是如何运行起第一个程序,不涉及语法、数据结构和算法等内容。
如果你已经通过计算机二级或水平相似的考试,甚至你是职业选手或是大师级的人物,就不必再往下看了。
同时,本FAQ只讨论C/C++语言,其他语言如JavaVBpython等均不涉及,虽然阅读本文前四章节也会对学习这些语言有所帮助,但深入学习还是请阅读这些语言的专门教材。
为何有这篇FAQ
本文是为那些对编程新手所准备的,如果你自认已经不是新手,那么请离开把时间放到更有用的地方。
如果你是那种对编程一无所知,迫切想知道他是怎么回事,或者仅仅编写了几个小程序,却遇到一大堆问题,而在论坛或是其它地方又得不到帮助,但心中又有雄心壮志想要做绝世高手顶尖黑客或者想要以程序为生的入门级新人,那么你恰好是本文的服务对象,请详细阅读以下的文字,我想应该会对你有所帮助。
而且请你了解,本文的这部分内容所要介绍的是那些普遍性的概念,与具体任何一种语言都无关。
正如我们所知,市场上充斥着无数的编程教材,同时可以肯定的是,目前已经面世的教材(包括正式出版物和网络上的教程),穷一人一生之力是看不完的。
在这些书中,有大量的垃圾书,大量的平庸之作,还有少量的精品。
而即使是这少量的精品,也不可能看全。
既然书这么多,我为什么那么闲还要来写一篇呢,有这时间,我还能多画几张效果图挣俩钱花呢。
情况是这样的,市场上的书虽多,但其中几乎没有几本是面向初学者的。
我所指的初学者,是指从来没有编写过程序,甚至是连编程二字都没有听说过的人。
这样的书是如此之少,以至于要去购买或是阅读到他们都是很困难的事。
在我个人的学习生涯中我认识到很多编程教材有个糟糕的倾向。
他们要么是一下子告诉你所有的事,好像你能在千分之一秒中突然从菜鸟变成好手,要么就是认为有些事你早就应该知道,拿你当熟手看,导致你有一种赤身裸体被抛弃于猛兽横行的非洲旷野的感觉。
你还没有穿上衣服走出帐篷,连刀子都没有摸过,他们就试图告诉你草原上有多少可以捕获的猎物以及他们的位置,告诉你几百种武器和毒药的使用秘籍,告诉你两百条以上的陷阱安放要领。
你没有经过丝毫的练习,甚至还没有杀死过一只刚出壳的小鸡,他们就要你独自去捕猎数十头饥饿的狮子。
这种看似荒谬的情况从过去持续到今天,至今仍然存在。
这并不是说那些写教材的朋友都是傻瓜,这件事当然有它的原因,因为他们面向的读者是程序员。
程序员就象是猎人,他们更换语言就像猎人更换武器一样,不管他使用哪一种武器,捕猎的基本原理没有变化,变化的只是武器的使用方法。
对一个成熟的猎人而言,再强调基本原理就没有必要,所以教材们对人所共知的一些事也就避而不提。
一个成熟的猎人,她心中的捕猎知识是浑然一体的,武器的选择,野兽的习性,陷阱的安放,怎样做和为什么这样做都结合在一起,没有哪一部分可以独立出来,一部分一部分的教给别人是极度困难的的,要教就只能混杂在一起。
程序员的情况类似,知识体系是完整系统的,谈到一个问题总会牵扯到另一个,最后的结果就是别人总是希望并想当然的认为你可以一口吃成一个胖子。
这样的后果就是,一些很明显的事情,老手认为那是你应该知道的因而不予回答,而新人却发现没有任何地方可以找到解释,也不知道该到哪里去找答案。
(不懂得如何找答案也是新人的特点之一)。
有一个典型例子与这种情况很类似,鼠标,我们已经习以为常并且很熟练地使用着,但是很多第一次接触电脑的人那却是完全摸不着头脑的东西。
在各地的论坛里,总有大量的新人提出诸如“学C++好还是VC,VC++好?
”“C++也可以编窗口程序吗?
”这样的毫无常识的问题。
我的FAQ就是为了来一次性解决这种问题的。
编程为何物
编程就是编制程序。
程序是让计算机发挥功能的命令的集合。
程序有两种形式,让计算机真正执行的是电脉冲形式,叫机器码,程序员编制的通常是文本形式,叫源代码。
使用一个称为编译器的工具,可以把源代码转变为机器码。
而编程就是产生那些源代码的工作。
这个工作类似于谱曲、编菜谱、写工作手册。
我们知道,谱曲并不是一蹴而就的,往往需要反复的修改,直到最后满意为止,编程也是一样,接近工作时间的30%是完成粗制成品,剩下的70%时间是在不断的修改,这是相当枯燥和乏味的。
有志于投身编程的朋友们,不要忘记这一点。
如果这就是编程,那语言是怎么回事
文本形式的源代码,其实有些规定的。
就像我们和老美用英语交流。
首先你得说英文单词,不能冒法语词汇日文假名出来,其次你得按语法讲话,不能一个个单词往外蹦。
程序也同样有词汇和语法上的一些规定,这些规定就构成一门语言。
显然任何一门编程语言都是人造语言。
人造的东西,因发明人的想法而不同,就形成了不同的语言。
我为啥要学编程
这个问题有两层意思。
首先是编程为啥要学,很简单,因为这玩意不是生来就会,就像木匠活一样属于一门手艺,自然要通过学习才能掌握。
你怎么也得花上几年来学英语不是。
第二层涵义才是重点,为啥我要学它。
答案因人而异。
有人为了上学有人为了考试,有人为了求职挣钱,还有人就是吃饱撑没事做自虐。
什么为了开发智力啊证明自己啊寻找成就感啊,那都属于自虐,在下便属于自虐一族。
没啥说的,确定你的目的,也许只是好奇想接触下啥是编程,也许是有课业的任务,也许是想以后靠他找工作,或者是羡慕那些黑客。
总之,想继续深入的,往下看,没信心的趁早走人,外面帅哥美女多的是,不要浪费大好时光青春年华在一台破机器上,ok?
听说编程很难,是真的么,那我能学会吗?
你觉得说中文难么?
你能流利的说普通话是不是。
但是你知道么,汉语是世界上最难学习掌握的语言。
稍后我会介绍计算机的特征,你就会明白知道基本上编程这件事的难度等价于指挥IQ<20的壮汉。
任何一种计算机语言的难度都不会超过英语,更比不上汉语。
那么你认为你能不能学会编程呢。
请记住学会和学好是两个层次,就像中学生作文和报刊出版物之间的差异。
达到学会那个程度,只要有小学三年级的知识基础就可以开始了,也就是识字就行。
而如果要学好,那需要初高中毕业的文化水准,也就是应该略懂英文和解析几何。
当然还有更高的技术层次,比如在相当于职业作家的水平上,你将被称为专业程序员。
而如果你被称为大师,那就是诺贝尔文学奖。
抵达那个程度需要付出艰苦的努力,至于怎么达到,不在本FAQ讨论之列。
我真的可以么
如果你已经看完前面的部分到达这里,显然你是确实想要学习编程的新手。
不论你是为了什么目的来学习,在看了我上面的话之后是不是很有信心呢,不过我要打击你一下,不是谁都学得好编程的。
人人学开车,但不是谁都能上赛道,舒马赫更是只有那么一个。
就像有些惊险刺激的游乐设施禁止高血压心脏病患者参与一样,编程作为一项耗费智力和体力的活动,对参与者也有一定的要求,先来看看吧,满足这些条件,你就可以放心大胆的开始。
先说体质要求。
太祖说:
身体是革命的本钱。
健康的身体对编程大有益处,但并不是说残疾人就不能参与。
就目前的技术水平,除了脑瘫和目盲这两项,其他的肢体残缺根本不妨碍。
霍金先生在这样严重的情况下还能持续研究的事实,还不够激励你么。
紧随其后的是足够的精力和时间。
Dearfriend,只要你能静坐20分钟安静的看完这篇FAQ,你的体能就达标了。
如果你想告诉我,你能够一天在电脑前连续操作18小时以上,我要说的是,年轻人,虽然你很威猛,但请注意保养身体。
只要每天您能抽出30分钟来学习,那你的时间也合格了。
当然有更多时间确实会更好,不过也没必要每天12小时,编程并不是世界上最重要的事,我们还有别的事要做(这是对非职业选手说的)。
必须认识到,学习编程重要的是持之以恒,而不是依靠爆发力,每天半小时比一周一次6小时效果好的多。
第三个要求是你要略微懂一点计算机。
不错,只要略懂就可以了。
因为这正是本文的主要目的:
向略懂计算机的人介绍编程。
那么,怎么才算略懂呢。
如果你能够前往这几个网站并浏览:
www.acm.org和,那么你的水平已经超过我的想象,完全能胜任接下来的学习。
不用现在就前往,你知道怎样操作就可以了。
如果你还不会上网,没事。
你会不会打字,不需要打得很快,也不需要会打中文,只要你能把键盘上的26个字母和十个数字挨个输入一遍我就认为你已经通过。
然后,对于Windows用户,你能不能打开记事本程序,在里面打几个字并且存成一个文件。
如果你说能,OK,你合格了。
你还不会打字或是不会用记事本?
这样的话,你最好还是先学一学基本操作,否则本文对于你实在是毫无用处。
你找不到记事本程序,请让您边上的人指导一下,可能你还没有安装这个程序。
有可能您不是Windows用户,联系给你装机的人或公司,或是你们的网管,让她给你可用的文本编辑器,通常会是vi或Emacs,当然也可能是别的,只要你会编辑并存储一个文件,就可以了。
你连电脑都没见过?
?
@#$%^&*!
!
!
!
这样的话,本教程对你根本没有用处,你还是看见过电脑以后再来阅读本教程吧。
最后一点,你需要有顽强的毅力。
编程并不象你想象的那样轻松,不是野餐和聚会。
尤其是对于职业程序员都应掌握的C++,她可以用两句话来形容:
三年不开张,开张吃三年。
千万记住,C++被称为是真正的程序员使用的语言不是没有理由的,她的复杂度和性能超出你的想象。
有无数的编程新手,在第一个月不到就放弃了,你最好确定你不是他们中的一员。
毅力没有尺子可以来度量,在这里我只能先祝愿各位读者都能坚持到最后。
还一定要有台电脑么
不幸的是,到目前为止,是的。
在老年时期,贝多芬可以凭空作曲而不依靠钢琴之类的东西。
但几乎没有哪个程序员不依靠电脑而只在大脑里编写,尤其是开始学习的阶段。
作为编程的另一方面,一台合适的计算机也是不可缺少的。
用各种语言所编写的程序被运行在各种各样的机器和设备上,从掌上设备到巨型服务器,从台式电脑到微波炉,所有能够自动运行的地方都有程序的身影。
但是很遗憾,并不是只要能够运行的设备就可以用来进行编程的,这就像虽然可能洗衣机也能发出悦耳的声音,但你不能指望用洗衣机来录制流行歌曲(嗯,也许SONY有这样的产品,我保留意见)。
我们主要还是用个人电脑来学习编程。
目前大部分语言,所需要的电脑并不如你想象的那样高级(.net系列不在我们的讨论之列,他的集成环境对系统要求很高)。
就我所知,即使是主频只有30MHz,640K的内存,也是可以用来编写小规模C/C++程序的,只不过感觉不是那么畅快而已。
当然作为学习,我们还是需要有比较称手的设备。
不错,最重要的就是称手两个字,所谓称手,就是不会由于设备的问题,妨碍你的思考,不需要高速的处理器,也不需要巨大的显示器,更不需要海量的硬盘,只要称手。
编程不是豪华海上旅游,而是修行。
修行不需要五星级饭店,但也要有破屋以遮风雨,否则感冒发烧了,怎样来修行呢。
那么还是来谈一谈电脑的要求吧。
只要你的电脑能运行DOS,就及格了。
如果能够比较好的运行Windows98操作系统(说实话,98死机是免不了的,只要不常死机就可以),硬件上就达到80分的要求了,如果能运行Windows2000的话,那已经是满分了。
如果比这还高档,那简直好的超出想象,甚至可以参加奥运拿金牌去。
满分的那种设备,能够流畅运行.net环境的,在2008年1月份,全新的低于人民币一千元,二手设备甚至三百元不到。
如果你实在囊中羞涩,可以考虑到毕业前夕的大学去碰碰运气,也许能遇到大肆的前辈们送你一台。
在你看到本FAQ的时候,去任何一个电脑商场,随便购买一台,都可以符合要求。
在下强烈建议你买一台自己的设备,那种自由是公共机房无法给予的。
当然你执意要去机房的话,我也不反对。
但你能看到这份教材,就连一台能运行win2000的机器都弄不到吗,怎么说现在也已经是双核时代了。
我希望你的机器上装着以下操作系统之一:
Windows2000,FreeBSD,WindowsXP,Windows98,Linux,MS-DOS或任何厂商的UNIX。
我强烈推荐使用WindowsXP+SP2和FreeBSD这两个系统进行学习,本文中所有的程序在这两个系统都可以顺利运行通过,我将详细介绍在这两个系统下的设置,这对新手尤其重要。
当然我也没有忘记其它系统的兄弟,相应的设置也不会遗漏。
我没有提到MacOS系列是因为我对她还不熟悉,但我不反对你拥有她。
如果你的机器没有以上任何一个操作系统,请联系提供给你机器的人,如果不是你的机器忘记安装操作系统的话,那她极有可能是军方的机密设备,总之你小心为妙。
软件方面,依据不同的语言需要安装不同的软件。
如果学习C/C++。
使用FreeBSD,Linux,Solias等UNIX系统的,推荐安装GCC,该程序是默认被安装的,总在系统的某处,初学者不必考虑版本问题。
使用Microsoft操作系统的,建议使用VC6.0或VC2005/2008,或者GCC的windows移植版。
由于版权问题,如果不想破费的话,VC6要用VC2005的免费学习版来代替,BCB的命令行编译版和GCC的Win32版本来就都是免费的。
GCC的Win32版有Dev-cpp,MinGW等不同发行形式。
其他语言都要按照相关的资料安装和设置。
比如本文作者偏爱的Python语言,那是非常的方便,只要去python的主页直接下载对应不同平台的可执行包既可。
这些编译器怎样安装和设置我会在随后的章节里详细说明。
毕竟,好多人的学习热情就是被这样的细节所消耗掉的。
除此之外,拥有以下两件法宝将使您如虎添翼。
一:
一个被大家称作高手的喜欢玩计算机的人,这种人通常被叫做黑客或者极客。
拥有他(她),你在遇到问题的时候,可以求他帮忙。
记得给他点好处,吃个饭什么的。
二:
便捷的Internet连接。
可以上网意味着你可以干很多事,譬如可以和线上的高手(譬如我)即时联系,到论坛和usenet寻求帮助等等。
这在有时是极有价值的。
好了,不要着急,还有一点点准备工作我们就可以出发了。
好吧你说服我了,我打算开始,该怎么做
首先确保你的健康状况和基本计算机操作水平,我上面说过的机器也已经找好了吧,从来没听说谁没有电脑就能学习编程的(以后科技进步到人机合一的程度,也许可以实现)。
如果能有网络连接,那简直达到了完美的境界。
没人可以无师自通,天才也不行。
所以你要做的第一件事是找一本好的入门教材,最好是经典作品。
反复地看教材,要牢记一点,你所提出的大部分问题,教材上都有解释,只是你没有认真看而已。
反复地阅读,直到你觉得你已经可以编写出那本教材了,才可以丢弃他。
教材比老师好的理由之一是,你可以带教材上厕所去卧室,而老师不行。
当然,老师也有比教材优越的地方,那就是他可以给你解释教材上没有的问题。
但记住老师也是人,你不动脑子就去找他,他会厌烦的。
不要鄙视你的老师,即使他其它方面不如你,至少在编程这件事上他能做你的老师就是他比你强的硬道理。
你以为光看语法书和背诵单词而不练嘴就能说好英语么,显然不对。
编程也是,熟能生巧在任何地方都是一样的。
首先看懂教材上的那些例子,确保看懂之后,按着他的思路把它默写出来,当你尝试过就会知道看懂和默写是两个完全不同的程度。
然后就可以做书后面的习题,独立想,不要看答案或提示。
等到整本书后面的习题你都能做对的时候,你就算入门了。
然后去找等级考试二级三级的题目来做,等到也可以准确无误的时候,恭喜你,C语言(或者其他语言)可以算是通过了。
如果你的目的是去考试,现在就出发吧。
但如果你想要以编程谋生,sorry,你还欠火候。
这其中的差别就相当于大学英语四级作文和畅销英文小说之间的差异。
那么下一步怎么干
只需要考试的朋友,不需要看这一段。
想谋生或自虐的这边请。
通过C语言(或者其它语言)考试只是编程的第一步而已。
你掌握了大量的单词并且熟悉语法还不能让你写出优美的英语小说。
你要学习修辞手法、谋篇布局这类文学技巧,也需要掌握历史典故、谚语俗话和文化背景这些文字外的东西,如果要畅销,还需要超凡的主题生动的故事跌宕的情节。
编程圈子里有和这些类似的玩意儿。
算法和数据结构就是程序里的修辞手法谋篇布局。
人类编程虽然不过几十年,但运用程序所解决的问题,已经覆盖世界的每个角落各个方面。
各种各样的问题,被前辈的大师提炼归纳。
有些人们直接找出了解决的方法,有些人们找到了寻找解决方法的途径,还有些人们索性证明了在现阶段是不可能解决的。
这些解决方案就被统称为算法。
学习算法就是学习前人的智慧,少走弯路。
连牛顿爵士都是站在巨人的肩膀上,除非你自觉比老牛还牛,凭空就能解决别人十几年才想清楚的问题,那我也无话可说。
学算法很简单,也是找教材,做习题。
教材容易找,但新手往往找不到合适的习题。
我的建议是,在完成教材上的所有习题之后,可以去找编程竞赛的练习题来做,也就是所谓的OnlineJudge,我会在后续深入讨论这个东西。
相当于历史典故、谚语俗话、文化背景的东西,就是各个编译器和平台上的接口和库了。
假设现在有个程序要读写文件,不要误认为你需要亲自写个程序去控制硬盘的磁头伸缩,或者是光驱的透镜移动或者是U盘的地址定位。
除非你是想做个window或者Linux那样的操作系统(那样的兄弟会来看这篇FAQ还真是奇迹),否则所有包括文件操作、网络通讯、人机界面(键鼠屏打印机)这些,都是由操作系统提供的现成模块,只等着你来使用。
这些模块通常称为应用程序接口,不同的操作系统提供的不一样。
在接口的基础上,很多编译器和程序员做了进一步的包装形成了库,你可以比直接使用接口更方便地使用这些库而达到同样的功能。
由于系统的不一致,编译器的不同,所以在学库之前,先要确定你所要工作的平台和环境,还有应用方向。
Windows下编游戏和Linux下做数据库用的库是大相径庭的。
然后就是同样的一套步骤,找教材,做练习。
这个教材通常就是官方文档,windows下最好最全的就是MSDN,Unix/Linux平台有大量的文档,分布于man页和各种手册上,其他平台自行搜索。
可以去找习题,但更好的方案是去找一个实际的小型应用,在使用中学习效果无与伦比。
编写一个QQ或者BT,绝对能让你对网络操作部分了如指掌。
在这个阶段,你已经可以写出实用的程序了,为什么还要执着于做题呢。
优秀的文学作品有个共同的特征,他们虽然立足于不同的本民族文化,但却关心全人类共通的思想感情,体现着终极的人文关怀,我们都会为奥塞罗流泪不是么。
优秀的程序虽然应用方向不同平台各异,但他们一定完全符合计算机原理,用最合理的数学模型来展现。
如果你想成为合格的程序员,计算机原理和相关的数学知识是一定要补习的理论课。
除了看书和做题之外,还有一个内容不可缺少,就是阅读别人的程序。
没有哪个作家不大量阅读别人的作品,同样你也可以从别人的代码中吸取营养。
代码就是程序的全部,是真实的实现方法,一切都在代码中,甚至有时长篇累牍的说明还不如几行代码清晰明白。
今天的程序员是幸运的,开源运动的发展使得他们能够无偿而方便地得到世界上最优秀的并且是实际运作中的代码,几乎遍布任何应用领域。
只要你有心,可以找到任何想要的代码。
但读代码也是辛苦的事,请阅读和你水平相当的代码,差距太大将会是严重的身心打击。
学习库和学习算法可以同时进行,在你完成这两个阶段的时候,你已经是一个合格甚至是优秀的程序员了。
超凡的主题跌宕的情节,这个东西其实就是你的程序的应用方向。
如果说前面都是练习的话,这就是你自主创新的时候到了。
很多人都只是在老板的安排下为了工资而被动做些既不喜欢又没有价值的流水线产品,少数人才有机会做自己喜欢的东西。
想想看,QQ、3DMAX、WOW、IE、Apache甚至Windows都是多么知名的程序,有朝一日你的程序将会和他们一样知名。
不过我还是不得不给你泼冷水,这需要不懈的努力、敏锐的眼光和少量的运气,只有极少数的程序员能做到这一点。
不过,有梦想才能不断前进,不是么。
我碰到问题了,谁能帮我
郑钧说,记得没人会同情你,我亲爱的兄弟。
这真是至理名言。
编程这件事,基本上是不能指望有人帮你的。
当你遇到编程遇到问题,首先应该是去看编译器提供的信息。
它可是最直接的来源,相当于案发现场,从没听说刑警不看尸检报告就直接破案的。
现代的编译器已经不止编译那么简