采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
/c++语言与其他编程语言再编写时倒入外部函数的方法好像都不太一样。
其他语言是通过导入函数具体的定义实现的文件。c语言是导入头文件,头文件中仅包含函数的声明。
1那么编译器是如何知道对应函数实现的源文件是哪一个呢?
2.像一些标准库文件,编译器可能是事先链接好具体的实现函数,但每编译一次就要去整个库函数中查找这样的效率会不会太低? 是不是比那些通过指定函数实现位置的来导入包 的语言效率低呢?
编译器编译的时候,函数的声明只不过是告诉编译器有这么个函数而已,编译器看到声明也不会对声明做什么实质性的编译。
所以其实不存在定位到源码(c 或者 cpp 文件)的问题。
调用的时候,需要知道函数的地址,这个是链接阶段的工作,有链接器负责完成。静态链接是在整个链接过程中,直接将调用处的符号替换成对应的函数地址;动态链接是运行时加载,加载之后会计算符号的地址。
不过,C++ 编译慢确实有一部分的原因来自于头文件包含,现在也已经有了新特性在解决这个问题了。
明白了,谢谢老师
登录后可查看更多问答,登录/注册
如果通向大牛的道路有捷径,那就是先学好C语言
1.5k 3
1.0k 4
1.3k 9
1.5k 1
802 2