- 编译的过程
将基于英语的c++语言整理成编译器能理解和推理的格式。这形成了所谓的抽象语法树。由抽象的语法树表示我们的代码。编码器的工作是将我们的代码转换成常量数据或指令。
一旦编译器创建了抽象语法树,它可以开始生成实际代码。然后CPU执行这些代码。
一个简单的例子
- 创建一个新的head 文件
-
修改函数(这是无法编译通过)
-
引入头文件后可以通过编译(因为头文件仅仅只是复制)
查看预处理的结果
-
在当前的环境中设置预处理为yes
-
需要注意下面的提示(使用这个功能将不生成onbj文件)
-
再次编译,出现新的文件
尝试添加更多的预处理语句
- define预处理器语句基本上只进行搜索 INTEGER,然后替换为后边定义的东西
if预处理
iostream
查看编译的obj文件
-
让以上变得可读的设置
-
编译生成问及爱你
- 汇编代码
- 发现有中间变量的移动(简化代码)
- 后续使用优化器模式重新查看编译的结果发现少了很多无用的语句
编译时的常数折叠(任何场数结果都计算处理啊)
- 在做乘法之前的call的是log函数的签名