为什么按照书上的代码,编译老是出错?
2015-09-18
老是又小伙伴在群里说我的代码是按照书上的代码敲的,就是编译不过?想不通呀!目前市面上的一些书都是十来年以前编写的了,你不幸看的还是这些书,错误原因就在这里。
比如谭浩强的C语言程序设计这个本书都出了N版了,而我们在看很早的版本。时代在发展,在大家都在用vs2015了,C语言最新标准也换成了C11。你说你按照老版本书上的例子敲代码,编译不出错基本上都是幸运的了。
所以小伙伴们一定要注意了,你买书不要急着去看里面的知识。作者序你一定要看,它是在什么环境下写的,都讲些什么,计算机类的书基本上都会写上适用范围,开发环境等。如果一本书这方面都没有,那他肯定不是一本好书。
选好一本书,对于学习编程很重要。选网上大家都推荐的,大家说好才是真的好。你也不想我敲个例子都一大堆错误等着吧。真是这个样子你杀人的心都会有的。书本身的问题让人痛绝。但不全是书本自身的问题。上面我们提到的标准也是重要的一环,诚然又好多开源代码在以前的gcc版本是能编译过的,那时候的编程还是如c89,c99。后边的标准越来越严格了。谁都喜欢新东西,搞开发也一样,你说window 10 出来了, 你是不是痒痒的要把window 7换了。而本身编译工具也是在不断更新。标准差异再所难免。
为什么按照书上的代码,编译老是出错?
C标准到底何也? ANSI C 是由ANSI 制定的C语言标准。常见的编译器都按此标准设计。所以用ANSI C语言标准写的C程序, 各编译器都能识别,编译。这个对于编译器实现很重要,要不然老版本的代码用新的编译器编译又问题。标准在不断规范。所以以前写的代码规范与现行的不一致就会导致编译错误了。重不重要等你写代码维护版本就知道了。
上面说到的编译器,本身也是又差异的你能说vs的cc能跟gcc一样? 比如C99相对于C89来说增加了很多特性,比如说新的关键字,数据类型,变长数组,国际化特征等等,一般来说,现在的C编译器都能很好的符合C89标准,而C99标准至今还没有很好的普及,比如说微软直到VC2010依然没有符合C99标准。
为什么按照书上的代码,编译老是出错?
说了这么多按照书上的例子敲代码编译出错我们一定要知道,书中的例子是基于那个标准的,我们用的编译器支不支持这个标准。
如果在学习中遇到困惑可以直接加编程导师微信号coderonline,获取自学指南。