C/C++ 入门(9)编译链接

个人主页:仍有未知等待探索-CSDN博客

专题分栏:C++

目录

一、域

1、分类

2、搜索顺序

二、编译链接

1、代码在形成可执行文件的过程

2、符号表

三、问题

1、带有缺省参数的函数声明和定义分离


一、域

1、分类

域:全局域、局部域、命名空间域、类域。

2、搜索顺序

如果没有指定访问哪个域的话:1、局部域 2、全局域。

指定访问哪个域的话:直接去指定的域内访问。

二、编译链接

1、代码在形成可执行文件的过程

  • 预处理:展开头文件、宏替换、条件编译、去掉注释
  • 编译:检查语法->生成汇编代码
  • 汇编:把汇编代码转成二进制机器码
  • 链接:将文件合并到一起,并且根据函数名去其他文件中寻找函数地址

stack.s有函数的地址(定义),test.s没有函数的地址(声明)->分离。

2、符号表

编译器会生成一个叫做"符号表"的数据结构来维护变量名和内存地址直接的对应关系。它会搜集变量名,根据符号表找到变量的真正的物理位置,进行相关操作。 在机器执行程序的时候,会把变量名替换为内存地址(和长度),而不存在任何名称。

符号表:函数名和对应函数地址的表。

三、问题

1、带有缺省参数的函数声明和定义分离

缺省参数只写在函数声明的时候。

相关推荐
枫叶丹4几秒前
ModelEngine应用编排创新实践:通过可视化编排构建大模型应用工作流
开发语言·前端·人工智能·modelengine
net3m3319 分钟前
websocket下发mp3帧数据时一个包被分包为几个子包而导致mp3解码失败而播放卡顿有杂音或断播的解决方法
开发语言·数据库·python
38242782722 分钟前
python3网络爬虫开发实战 第2版:使用aiohttp
开发语言·爬虫·python
m0_6726565428 分钟前
JavaScript性能优化实战技术文章大纲
开发语言·javascript·性能优化
Yang-Never29 分钟前
Android 内存泄漏 -> LiveData如何解决ViewMode和Activity/Fragment之间的内存泄漏
android·java·开发语言·kotlin·android studio
Smartdaili China30 分钟前
如何在桌面和移动设备上修复YouTube错误400
开发语言·php·error·youtube·移动·住宅ip·错误400
持梦远方36 分钟前
持梦行文本编辑器(cmyfEdit):架构设计与十大核心功能实现详解
开发语言·数据结构·c++·算法·microsoft·visual studio
HeDongDong-38 分钟前
Kotlin 协程(Coroutines)详解
android·开发语言·kotlin
阿里嘎多学长39 分钟前
2025-12-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
鹿角片ljp41 分钟前
深入理解Java集合框架:核心接口与实现解析
java·开发语言·windows