C++ 编译三环节

预处理

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

cpp 复制代码
#pragma once

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


/* comment */

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

汇编

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

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

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

链接

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

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

相关推荐
豪斯有话说12 分钟前
C++_红黑树
开发语言·数据结构·c++
莱茵不哈哈13 分钟前
C/C++八股文
开发语言·c++
Tanecious.1 小时前
C++--list的使用及其模拟实现
c++·list
刚入门的大一新生1 小时前
C++初阶-list的底层
c++·windows·list
刚入门的大一新生1 小时前
C++初阶-list的模拟实现(难度较高)
开发语言·c++·list
Bt年2 小时前
浮点数精度问题(CSP38思考)
开发语言·c++·算法
csdn_aspnet2 小时前
C++ 求圆面积的程序(Program to find area of a circle)
c++
循环渐进Forward3 小时前
【TinyWebServer】HTTP连接处理
linux·网络·c++·网络协议·算法·http
字节高级特工3 小时前
【Linux篇】细品环境变量与地址空间
linux·运维·服务器·c语言·c++·ubuntu·centos
HaiQinyanAN3 小时前
【学习笔记】虚函数+虚析构函数
c++·笔记·学习