C++ 编译三环节

预处理

处理预处理指令。移除注释,展开宏,展开头文件。

cpp 复制代码
#pragma once

#include <cstdio>
#ifdef OS_LINUX
#endif // OS_LINUX


/* comment */

生成没有预处理指令的 C++ 文件。

汇编

将预处理后的文件作为输入,进行词法解析、语法解析、语义解析。将 C++ 源代码转化成汇编代码。

调用汇编工具将汇编代码转化为可以被计算机直接执行的二进制文件。汇编器将每个源文件编译成一个目标文件,将目标文件组合成一个可执行文件。

目标文件可以引用未定义的符号。

链接

链接器会根据编译器生成的目标文件生成最终的编译输出。将对未定义符号的引用替换为正确的地址来链接所有目标文件。

在此阶段,最常见的错误是缺少定义或重复定义。

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境2 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境2 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴3 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境5 天前
C++ 的Eigen 库全解析
c++
卷无止境5 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴5 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18007 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴7 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake