关于头文件的问题请教一下老师
c/c++语言与其他编程语言再编写时倒入外部函数的方法好像都不太一样。
其他语言是通过导入函数具体的定义实现的文件。c语言是导入头文件,头文件中仅包含函数的声明。
1那么编译器是如何知道对应函数实现的源文件是哪一个呢?
2.像一些标准库文件,编译器可能是事先链接好具体的实现函数,但每编译一次就要去整个库函数中查找这样的效率会不会太低? 是不是比那些通过指定函数实现位置的来导入包 的语言效率低呢?
21
收起
正在回答
1回答
问题1:
在编译器会指定链接的库或者源文件编译之后的目标文件,关于函数在那个源文件中实现没有那么重要,因为最后都会变成一个可执行程序 ,会有一个统一的符号表,到时候按照偏移跳转即可
问题2:
会链接整个库或者目标文件,不会单独查找某个函数,编译器会统一安排每个函数的位置,这个与程序的地址空间有关系
补充 : 在编译时 我们是需要指定需要链接的库,一般 默认 编译器会链接 glibc 库
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 22954 份
- 解答问题 1163 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星