请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

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

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

正在回答 回答被采纳积分+3

1回答

quickzhao 2022-10-12 23:26:31

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

0 回复 有任何疑惑可以回复我~
  • 提问者 我想跑路 #1
    预编译、编译、汇编和链接,动态库,静态库这个我是知道的。主要是比如如果自己写的库,那通过头文件找源文件好像没有直接对应?   好奇一下老师的体系课是哪个方向的呢?然后大概什么时候可以上线?
    回复 有任何疑惑可以回复我~ 2022-10-13 08:34:08
  • quickzhao 回复 提问者 我想跑路 #2
    如果找不到对应的实现链接时会报错的。体系课主要面向C++就业,比较系统全面的知识。大概年底左右上线。
    回复 有任何疑惑可以回复我~ 2022-10-13 10:34:14
  • 提问者 我想跑路 回复 quickzhao #3
    终于要出cpp的体系课了。期待上线再向老师学习
    回复 有任何疑惑可以回复我~ 2022-10-13 11:37:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信