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

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

专题分栏:C++

目录

一、域

1、分类

2、搜索顺序

二、编译链接

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

2、符号表

三、问题

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


一、域

1、分类

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

2、搜索顺序

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

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

二、编译链接

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

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

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

2、符号表

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

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

三、问题

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

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

相关推荐
无限进步_几秒前
【Linux】进度条:行缓冲区、\r 与 fflush 的实战
linux·服务器·开发语言·数据结构·后端
誰能久伴不乏4 分钟前
Qt C++ 解析 JSON 完全指南:从核心概念到工业级实战
c++·qt·json
郝学胜-神的一滴5 分钟前
力扣 144:二叉树前序遍历的优雅实现
java·数据结构·c++·python·算法·leetcode·职场和发展
Evand J10 分钟前
【MATLAB程序】基于σ修正自适应律的多无人机菱形编队控制仿真,附下载链接
开发语言·matlab·无人机·控制·编队飞行·多uav
risc12345610 分钟前
【Lucene】理解不是看见光,而是让眼睛适应黑暗
java·开发语言
枕星而眠10 分钟前
C++面向对象核心:类间关系与继承深度解析
运维·开发语言·c++·后端
秋越11 分钟前
从工程角度理解嵌入式C语言关键字
c语言·开发语言·嵌入式·嵌入式软件开发·嵌入式c语言·c语言关键字
FBI HackerHarry浩12 分钟前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
方也_arkling13 分钟前
【Java-Day16】API篇-Math类/System类/Object类/包装类
java·开发语言
x***r15113 分钟前
burpsuite-1.4.07.jar 使用步骤详解(附Java环境配置与Burp Suite抓包教程)
java·开发语言·jar