采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
c/c++语言与其他编程语言再编写时倒入外部函数的方法好像都不太一样。
其他语言是通过导入函数具体的定义实现的文件。 c/c++语言是导入头文件,头文件中仅包含函数的声明。
1那么编译器是如何知道对应函数实现的源文件是哪一个呢?
2.像一些标准库文件,编译器可能是事先链接好具体的实现函数,但每编译一次就要去整个库函数中查找这样的效率会不会太低? 是不是比那些通过指定函数实现位置的来导入包 的语言效率低呢?
这个过程不是你想的那么简单。你如果想详细了解整个过程,需要仔细学习一个C++预编译、编译、汇编和链接的整个过程。有的时候根本就没有你说的头文件所对应的源文件,而是编译后的二进制文件,为了隐藏一些实现的细节;简单的说你担心的问题不是问题,各个平台生成的可执行程序会有相对固定的跳转位置,保证程序的正常运行。至于你说的效率问题可能主要体现的不是编译期效率问题,而更多的是动态加载还是静态加载的调用效率问题,一般来说静态加载的效率高些,但体积会大些,属于空间换时间。如果你想详细了解一些细节,推荐你看一部书《程序员的自我修养--链接、装载和库》。顺便说下,我们正在准备的体系课中会有一些关系底层编译链接的更详细内容。
预编译、编译、汇编和链接,动态库,静态库这个我是知道的。主要是比如如果自己写的库,那通过头文件找源文件好像没有直接对应? 好奇一下老师的体系课是哪个方向的呢?然后大概什么时候可以上线?
如果找不到对应的实现链接时会报错的。体系课主要面向C++就业,比较系统全面的知识。大概年底左右上线。
终于要出cpp的体系课了。期待上线再向老师学习
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.2k 12
1.3k 10
1.2k 9
991 9