老是又小伙伴在群里說我的代碼是按照書上的代碼敲的,就是編譯不過?想不通呀!目前市面上的一些書都是十來年以前編寫的了,你不幸看的還是這些書,錯(cuò)誤原因就在這里。
比如譚浩強(qiáng)的C語言程序設(shè)計(jì)這個(gè)本書都出了N版了,而我們在看很早的版本。時(shí)代在發(fā)展,在大家都在用vs2015了,C語言最新標(biāo)準(zhǔn)也換成了C11。你說你按照老版本書上的例子敲代碼,編譯不出錯(cuò)基本上都是幸運(yùn)的了。
所以小伙伴們一定要注意了,你買書不要急著去看里面的知識。作者序你一定要看,它是在什么環(huán)境下寫的,都講些什么,計(jì)算機(jī)類的書基本上都會寫上適用范圍,開發(fā)環(huán)境等。如果一本書這方面都沒有,那他肯定不是一本好書。
選好一本書,對于學(xué)習(xí)編程很重要。選網(wǎng)上大家都推薦的,大家說好才是真的好。你也不想我敲個(gè)例子都一大堆錯(cuò)誤等著吧。真是這個(gè)樣子你殺人的心都會有的。書本身的問題讓人痛絕。但不全是書本自身的問題。上面我們提到的標(biāo)準(zhǔn)也是重要的一環(huán),誠然又好多開源代碼在以前的gcc版本是能編譯過的,那時(shí)候的編程還是如c89,c99。后邊的標(biāo)準(zhǔn)越來越嚴(yán)格了。誰都喜歡新東西,搞開發(fā)也一樣,你說window 10 出來了, 你是不是癢癢的要把window 7 換了。而本身編譯工具也是在不斷更新。標(biāo)準(zhǔn)差異再所難免。
為什么按照書上的代碼,編譯老是出錯(cuò)?
C標(biāo)準(zhǔn)到底何也? ANSI C 是由ANSI 制定的C語言標(biāo)準(zhǔn)。常見的編譯器都按此標(biāo)準(zhǔn)設(shè)計(jì)。所以用ANSI C語言標(biāo)準(zhǔn)寫的C程序, 各編譯器都能識別,編譯。這個(gè)對于編譯器實(shí)現(xiàn)很重要,要不然老版本的代碼用新的編譯器編譯又問題。標(biāo)準(zhǔn)在不斷規(guī)范。所以以前寫的代碼規(guī)范與現(xiàn)行的不一致就會導(dǎo)致編譯錯(cuò)誤了。重不重要等你寫代碼維護(hù)版本就知道了。
上面說到的編譯器,本身也是又差異的你能說vs的cc能跟gcc一樣? 比如C99相對于C89來說增加了很多特性,比如說新的關(guān)鍵字,數(shù)據(jù)類型,變長數(shù)組,國際化特征等等,一般來說,現(xiàn)在的C編譯器都能很好的符合C89標(biāo)準(zhǔn),而C99標(biāo)準(zhǔn)至今還沒有很好的普及,比如說微軟直到VC2010依然沒有符合C99標(biāo)準(zhǔn)。
為什么按照書上的代碼,編譯老是出錯(cuò)?
說了這么多按照書上的例子敲代碼編譯出錯(cuò)我們一定要知道,書中的例子是基于那個(gè)標(biāo)準(zhǔn)的,我們用的編譯器支不支持這個(gè)標(biāo)準(zhǔn)。
如果在學(xué)習(xí)中遇到困惑可以直接加編程導(dǎo)師微信號coderonline,獲取自學(xué)指南。