news 2026/9/3 2:04:08

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/9/2 21:03:57

nacos2.3.0 接入pgsql或其他数据库

首先尝试使用官方插件进行扩展,各种报错后放弃,不如自己修改源码吧。 一、官方解决方案 1、nocos 文档地址:Nacos 配置中心简介, Nacos 是什么 | Nacos 官网 2、官方解答:nacos支持postgresql数据库吗 | Nacos 官网 3、源码下载地…

作者头像 李华
网站建设 2026/9/2 21:03:50

USB Serial Controller驱动与RS485模块协同工作实战解析

从“插上就用”到稳定通信:USB转RS485实战全解析你有没有遇到过这样的场景?一台工控机没有串口,但现场一堆温湿度传感器、电表、阀门控制器全是RS485接口。怎么办?最简单的方案就是——插个USB转RS485模块。听起来很简单&#xff…

作者头像 李华
网站建设 2026/9/2 21:03:51

Nginx如何实现 TCP和UDP代理?

文章目录 前言 Nginx之TCP和UDP代理 工作原理示意图 配置文件和命令参数注释 基本命令 配置实例说明 TCP代理实例UDP代理实例 总结 前言 Nginx是一个高性能的HTTP和反向代理服务器,同时也支持TCP/UDP代理。在1.9.13版本后,Nginx已经支持端口转发&…

作者头像 李华
网站建设 2026/9/2 21:04:00

JLink驱动安装后USB通信超时的完整示例分析

JLink驱动安装后USB通信超时?一文搞懂底层机制与实战排查 你有没有遇到过这样的场景:J-Link插上电脑,设备管理器里“通用串行总线控制器”中赫然显示着“J-Link”,但Keil点下载却弹出“Connection timed out”;或者J-…

作者头像 李华
网站建设 2026/9/2 21:03:47

Matlab实现GNMF测试阶段投影:将新数据映射到低维表示

在实际应用非负矩阵分解(NMF)或图正则化非负矩阵分解(GNMF)时,我们通常会先在训练集上学习基矩阵U,然后面对新来的测试数据时,需要快速得到其在同一低维空间中的表示V。这就是out-of-sample或测试阶段投影问题。 标准的NMF在测试阶段可以通过简单的非负最小二乘求解,但…

作者头像 李华