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

来源:7-21 C++语言到底需不需要GC(Gabage Collector

我想跑路

2022-10-12

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

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

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

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

写回答

1回答

quickzhao

2022-10-12

这个过程不是你想的那么简单。你如果想详细了解整个过程,需要仔细学习一个C++预编译、编译、汇编和链接的整个过程。有的时候根本就没有你说的头文件所对应的源文件,而是编译后的二进制文件,为了隐藏一些实现的细节;简单的说你担心的问题不是问题,各个平台生成的可执行程序会有相对固定的跳转位置,保证程序的正常运行。至于你说的效率问题可能主要体现的不是编译期效率问题,而更多的是动态加载还是静态加载的调用效率问题,一般来说静态加载的效率高些,但体积会大些,属于空间换时间。如果你想详细了解一些细节,推荐你看一部书《程序员的自我修养--链接、装载和库》。顺便说下,我们正在准备的体系课中会有一些关系底层编译链接的更详细内容。

0
3
我想跑路
回复
quickzhao
终于要出cpp的体系课了。期待上线再向老师学习
2022-10-13
共3条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程