个人主页:仍有未知等待探索-CSDN博客
专题分栏:C++
目录
一、域
1、分类
2、搜索顺序
二、编译链接
1、代码在形成可执行文件的过程
2、符号表
三、问题
1、带有缺省参数的函数声明和定义分离
一、域
1、分类
域:全局域、局部域、命名空间域、类域。
2、搜索顺序
如果没有指定访问哪个域的话:1、局部域 2、全局域。
指定访问哪个域的话:直接去指定的域内访问。
二、编译链接
1、代码在形成可执行文件的过程
- 预处理:展开头文件、宏替换、条件编译、去掉注释
- 编译:检查语法->生成汇编代码
- 汇编:把汇编代码转成二进制机器码
- 链接:将文件合并到一起,并且根据函数名去其他文件中寻找函数地址
stack.s有函数的地址(定义),test.s没有函数的地址(声明)->分离。
2、符号表
编译器会生成一个叫做“符号表”的数据结构来维护变量名和内存地址直接的对应关系。它会搜集变量名,根据符号表找到变量的真正的物理位置,进行相关操作。 在机器执行程序的时候,会把变量名替换为内存地址(和长度),而不存在任何名称。
符号表:函数名和对应函数地址的表。
三、问题
1、带有缺省参数的函数声明和定义分离
缺省参数只写在函数声明的时候。