上篇的链接在这里:
函数,从编辑到编译 (上) --带你了解预编译做了什么
下面继续:
2. 编译
所谓编译过程,就是**把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生产相应的汇编代码文件。**这一步是整个程序构建的核心部分,也是最容易出错的一部分。
从现在开始,步骤就变得十分复杂了。
对函数来说,这一阶段是最繁琐也是最为危险的:稍有不慎,轻则 warning
重则 error
。
我见过许多出错的函数,他们连着行号被编译器带到窗口,当街示众。
也有些函数和 #pragma
关系比较好,小错误被遮掩过去,免去了示众的命运。
2.1 扫描
我们要先经过一台扫描器 (Scanner),这机器如此庞大,以至于我根本看不出内部的细节。
我对大型机器充满好奇,编译器给了我一本手册——《编译宝典》,他说里面有讲扫描器的实现。
可我看不懂。
编译器告诉我,想要参透这本宝典,需要付出代价。
“代价?像岳不群那样?”
“你想哪儿去了!你说的那是《葵花宝典》,我说的代价是时间和精力!编译器这种庞大的工程,需要一个团队来合作完成,除非你是打算写写玩具编译器。”
所以我放弃了造出这些