关于头文件的问题请教一下老师

来源:11-9 案例:复制文件-3

我想跑路

2022-10-12

/c++语言与其他编程语言再编写时倒入外部函数的方法好像都不太一样。

其他语言是通过导入函数具体的定义实现的文件。c语言是导入头文件,头文件中仅包含函数的声明。

1那么编译器是如何知道对应函数实现的源文件是哪一个呢?

2.像一些标准库文件,编译器可能是事先链接好具体的实现函数,但每编译一次就要去整个库函数中查找这样的效率会不会太低? 是不是比那些通过指定函数实现位置的来导入包 的语言效率低呢?

写回答

1回答

bennyhuo

2022-10-12

编译器编译的时候,函数的声明只不过是告诉编译器有这么个函数而已,编译器看到声明也不会对声明做什么实质性的编译。

所以其实不存在定位到源码(c 或者 cpp 文件)的问题。

调用的时候,需要知道函数的地址,这个是链接阶段的工作,有链接器负责完成。静态链接是在整个链接过程中,直接将调用处的符号替换成对应的函数地址;动态链接是运行时加载,加载之后会计算符号的地址。

不过,C++ 编译慢确实有一部分的原因来自于头文件包含,现在也已经有了新特性在解决这个问题了。

0
1
我想跑路
明白了,谢谢老师
2022-10-12
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程