nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
老是又小伙伴在群里說我的代碼是按照書上的代碼敲的,就是編譯不過?想不通呀!目前市面上的一些書都是十來年以前編寫的了,你不幸看的還是這些書,錯誤原因就在這里。
比如譚浩強的C語言程序設計這個本書都出了N版了,而我們在看很早的版本。時代在發展,在大家都在用vs2015了,C語言最新標準也換成了C11。你說你按照老版本書上的例子敲代碼,編譯不出錯基本上都是幸運的了。
所以小伙伴們一定要注意了,你買書不要急著去看里面的知識。作者序你一定要看,它是在什么環境下寫的,都講些什么,計算機類的書基本上都會寫上適用范圍,開發環境等。如果一本書這方面都沒有,那他肯定不是一本好書。
選好一本書,對于學習編程很重要。選網上大家都推薦的,大家說好才是真的好。你也不想我敲個例子都一大堆錯誤等著吧。真是這個樣子你殺人的心都會有的。書本身的問題讓人痛絕。但不全是書本自身的問題。上面我們提到的標準也是重要的一環,誠然又好多開源代碼在以前的gcc版本是能編譯過的,那時候的編程還是如c89,c99。后邊的標準越來越嚴格了。誰都喜歡新東西,搞開發也一樣,你說window 10 出來了, 你是不是癢癢的要把window 7 換了。而本身編譯工具也是在不斷更新。標準差異再所難免。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
C標準到底何也? ANSI C 是由ANSI 制定的C語言標準。常見的編譯器都按此標準設計。所以用ANSI C語言標準寫的C程序, 各編譯器都能識別,編譯。這個對于編譯器實現很重要,要不然老版本的代碼用新的編譯器編譯又問題。標準在不斷規范。所以以前寫的代碼規范與現行的不一致就會導致編譯錯誤了。重不重要等你寫代碼維護版本就知道了。
上面說到的編譯器,本身也是又差異的你能說vs的cc能跟gcc一樣? 比如C99相對于C89來說增加了很多特性,比如說新的關鍵字,數據類型,變長數組,國際化特征等等,一般來說,現在的C編譯器都能很好的符合C89標準,而C99標準至今還沒有很好的普及,比如說微軟直到VC2010依然沒有符合C99標準。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
說了這么多按照書上的例子敲代碼編譯出錯我們一定要知道,書中的例子是基于那個標準的,我們用的編譯器支不支持這個標準。
如果在學習中遇到困惑可以直接加編程導師微信號coderonline,獲取自學指南。
如果對編程感興趣,想了解更多的編程知識,解決編程問題,以及入門指導,幫你解決編程中遇到的困惑,我們這里有java高手,C++/C高手,windows/Linux高手,android/ios高手,請大家關注微信公眾號:程序員互動聯盟或者coder_online