- 现在链接的主要焦点是找到每个符号和函数在哪里。
- 每个文件被编译成一个单独的目标文件
- 一个翻译单元,它们彼此之间没有关系
- 所以如果我们决定把我们的程序分割成多个C+文件
- 即使只有一个文件,也许知道入口在哪main函数

- 这时编译没有问题,但是build链接会出问题

- entry point must be defined,每个阶段会报每个阶段的错误,比如C开头的就是编译的错误,LINK开头的就是链接的错误

- 程序入口也不一定是main函数,可以手动设定

- 如果只在一个文件中调用这个函数,可以加上 static符号
- 这样就在本文件中不适用Multiply就不会链接

二义性匹配

-
有时两个函数都引用了log.h,又因为log.h就是简单的复制,所以会出二义性的错误,这是加上static修饰就能保证,log函数在链接时的局部性质

-
还可以使用inline,这意味着直接替换

将

变为

或者(放到其中一个翻译单元中,这样也没有二义性)


本文详细探讨了C++程序在编译和链接过程中遇到的问题,包括如何定位函数和符号的位置,解决二义性错误的方法,以及如何通过使用static和inline关键字来避免链接问题。
5311

被折叠的 条评论
为什么被折叠?



