news 2026/4/16 12:52:23

01. C++是如何工作的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
01. C++是如何工作的

1.C++是如何工作的

2.编译

3.链接


1.C++是如何工作的

a.预处理 编译器收到源文件后,一看到这条语句,就先处理这些语句,在实际编译发生前就处理这些语句 常见的预处理语句:#include,#define,#ifdef #pragma#include找到这个文件, 将这个文件的所有内容拷贝到现在的文件b.当预处理语句被处理后,文件被编译,编译器将所有c++代码转换为目标文件,使用vs生成的 文件后缀是obj;存在某些重要的设置决定我们怎么转化代码-解决方案配置:构建项目的规则-解决方案平台:32位操作系统还是64位操作系统 c.link是将obj文件合并成一个执行文件(exe),vs中ctrl+F7用于单独编译cpp文件;函 数声明表示函数存在,定义表示函数体;链接寻找函数的定义和程序的入口点

2.编译

核心作用:将预处理后的文件翻译成汇编语言代码,然后将汇编语言代码翻译成二进制码,生成 目标文件(windows.obj后缀),具体操作:a.语法分析 检查代码是否符合c++语法规则(比如少分号,括号不匹配都会在此报错)b.语法分析 检查代码逻辑合理性(比如变量未声明就使用,类型不匹配)c.优化 对代码进行编译优化(比如死代码消除,提升运行效率)d.生成汇编代码 将合法的c++代码转化为对应cpu架构的汇编指令 e.将汇编代码翻译成二进制码,生成目标文件

3.链接

a.核心作用:将多个目标文件(自己写的+系统/第三方库的目标文件)合并,解析符合引用,生成可执行文件;比如你的代码中调用了cout(属于c++标准库),链接器会找到标准库的目标文 件,把cout的实现和你的代码合并,解决"未定义引用"问题 b.链接分为两种类型-静态链接:把库的代码直接复制到可执行文件中(体积大,运行时不依赖库文件,后缀.a/.dll)-动态链接:只记录库的引用(体积小,运行时需要依赖动态库文件,后缀.so/.dll)
c.常见的链接错误-未解决的外部符合unresolved external symbol表示链接器找不到它需要的东西时发生-存在重复的符合,函数或变量有相同的名字和相同的签名

还可以通过inline内联函数,将函数调用替换为函数体
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:57:41

STM32CubeMX下载后的第一个LED闪烁项目从零实现

从零开始点亮第一盏LED:STM32CubeMX实战入门全记录 你有没有过这样的经历?下载完STM32CubeMX,打开软件却不知道下一步该点哪里;好不容易生成了代码,编译烧录后LED却不亮……别担心,这几乎是每个嵌入式新手…

作者头像 李华
网站建设 2026/4/16 11:55:48

AD导出Gerber文件时层设置的系统学习

Altium Designer导出Gerber文件:从层设置到生产交付的实战指南在电子硬件开发中,完成PCB布局布线只是走完了“万里长征第一步”。真正决定产品能否顺利投产的关键一步——把设计准确无误地交给工厂制造,往往被许多工程师轻视甚至忽视。而这个…

作者头像 李华
网站建设 2026/4/16 0:39:08

基于STM32的工业控制ISR配置手把手教程

手把手教你打造工业级实时响应系统:STM32中断配置实战全解析在工厂的自动化产线上,一个电机突然过流,控制系统必须在几毫秒内切断电源;一台机器人手臂接近障碍物,安全光栅信号必须被立即捕获并处理;PLC需要…

作者头像 李华
网站建设 2026/4/16 12:00:03

STM32开发入门:Keil5安装与配置手把手教程

从零开始搭建STM32开发环境:Keil5安装与配置实战指南 你是不是也曾在准备动手写第一行代码时,被一堆工具链、驱动和配置项搞得晕头转向?明明只是想点亮一个LED,却卡在“无法连接目标”或者“找不到芯片”这种问题上。别急——这几…

作者头像 李华
网站建设 2026/4/16 12:33:42

Multisim汉化实战:软件层修改完整指南

Multisim汉化实战:从资源修改到自动化部署的完整技术路径你有没有遇到过这样的场景?打开Multisim准备做电路仿真,刚点开“Place”菜单就卡住了——Ground是接地还是电源?Probe到底该译成“探针”还是“探测器”?对于初…

作者头像 李华
网站建设 2026/4/16 12:44:05

工业网关开发中的CubeMX安装避坑指南

工业网关开发实战:STM32CubeMX安装避坑全记录 在我们最近的一个工业边缘计算项目中,团队刚拿到新设计的STM32H743核心板,准备着手开发支持Modbus、CAN和以太网协议转换的智能网关。一切就绪,却卡在了最基础的一环—— STM32Cube…

作者头像 李华