- 编译的过程




将基于英语的c++语言整理成编译器能理解和推理的格式。这形成了所谓的抽象语法树。由抽象的语法树表示我们的代码。编码器的工作是将我们的代码转换成常量数据或指令。
一旦编译器创建了抽象语法树,它可以开始生成实际代码。然后CPU执行这些代码。
一个简单的例子

- 创建一个新的head 文件



-
修改函数(这是无法编译通过)

-
引入头文件后可以通过编译(因为头文件仅仅只是复制)

查看预处理的结果
-
在当前的环境中设置预处理为yes

-
需要注意下面的提示(使用这个功能将不生成onbj文件)

-
再次编译,出现新的文件



尝试添加更多的预处理语句

- define预处理器语句基本上只进行搜索 INTEGER,然后替换为后边定义的东西


if预处理




iostream



查看编译的obj文件

-
让以上变得可读的设置


-
编译生成问及爱你

- 汇编代码


- 发现有中间变量的移动(简化代码)

- 后续使用优化器模式重新查看编译的结果发现少了很多无用的语句
编译时的常数折叠(任何场数结果都计算处理啊)



- 在做乘法之前的call的是log函数的签名

本文详细介绍了C++代码从源文件到可执行文件的整个编译过程,包括抽象语法树的生成、预处理阶段、代码优化等关键步骤,并通过实例展示了预处理器的工作原理。
440

被折叠的 条评论
为什么被折叠?



