C++ C++;:obj文件的链接顺序是否重要?

C++ C++;:obj文件的链接顺序是否重要?,c++,visual-studio,linker,C++,Visual Studio,Linker,以声明和定义简单函数的头文件和实现文件以及包含调用该函数的main()的第二个实现文件为例,编译器将生成两个对象文件 1) 当链接这些文件以生成可执行文件时,顺序是否重要 答案表明顺序无关紧要 明确同意,并给出了使用GCC的示例 2) 如果顺序确实重要,那么像VisualStudio这样的IDE如何确定适当的链接顺序 我清楚地记得在使用gcc/g++构建时遇到未解决的符号错误,并且需要更改makefile中对象文件的顺序以修复此问题。但是,我可能记错了链接库文件。对象链接文件的顺序并不重要。库顺

以声明和定义简单函数的头文件和实现文件以及包含调用该函数的main()的第二个实现文件为例,编译器将生成两个对象文件

1) 当链接这些文件以生成可执行文件时,顺序是否重要

答案表明顺序无关紧要

明确同意,并给出了使用GCC的示例

2) 如果顺序确实重要,那么像VisualStudio这样的IDE如何确定适当的链接顺序


我清楚地记得在使用gcc/g++构建时遇到未解决的符号错误,并且需要更改makefile中对象文件的顺序以修复此问题。但是,我可能记错了链接库文件。

对象链接文件的顺序并不重要。库顺序确实很重要,这是开发人员的责任


老实说,链接器非常古老。现代语言没有链接器,但GCC特别致力于与过去保持兼容。

GCC还支持
-Wl--start group
-Wl--end group
选项,允许链接,而不考虑库的顺序。澄清一下:从功能角度来看,顺序并不重要,但由于缓存效应,可能会影响性能。简言之,如果有一个函数彼此调用非常频繁,那么在代码中将它们组合在一起是一件好事(tm),而在它们之间穿插不相关的代码可能会影响I缓存的效率。比如说,,