程序员进阶图书
这篇书评可能有关键情节透露
Chapter 1
hello.c 源程序(文本)——>预处理器(cpp)
hello.i 修改了的源程序(文本)——>编译器(ccl)
hello.s 汇编程序(文本)——>汇编器(as)
hello.o 可重定位目标程序(二进制)——>链接器(ld)
hello 可执行目标程序(二进制)
了解编译系统如何工作是大有益处的:
1. 优化程序性能:一个switch语句是否总是比一系列的if-else语句高效得多?一个函数调用的开销有多大?while循环比for循环更有效吗?指针引用比数组索引更有效吗?为什么将循环求和的结果放在一个本地变量中,会比将其放到一个通过引用传递过来的参数中,运行起来快得多呢?为什么我们只是简单地重新排列一下算术表达式中的括号就能让函数运行得更快?
2. 理解链接时出现的错误:链接器报告说它无法解析一个引用,这是什么意思?静态变量和全局变量的区别是什么?如果你在不同的C文件中定义了名字相同的两个全局变量会发生什么?静态库和动态库的区别是什么?我们在命令行上排列库的顺序有什么影响?最严重的是,为什么有些连接错误直到运行时才会出现?
3. 避免安全漏洞。
© 本文版权归作者 本因坊逗逼 所有,任何形式转载请联系作者。