标签: static-linking
我的感觉是,基本上100%的时间都是您想要发生的情况,但是我怀疑可能会有一些理论上的警告,例如:
说我静态链接标准库,我使用printf而不是sprintf。进一步假设我知道&sprintf == &printf + SPRINTF_OFFSET。编译器如何知道我从未像这样访问sprintf?该标准是否以某种方式禁止它?
printf
sprintf
&sprintf == &printf + SPRINTF_OFFSET
答案 0 :(得分:0)
如果我静态链接C库,是否可以优化未使用的函数?
是的,只要它们不是通过其他符号拉入链接的对象的一部分。
要了解链接器如何工作,请阅读this或this。
编译器如何知道我从未像这样访问sprintf?
C语言标准禁止计算不指向有效对象或不指向数组最后一个元素的指针。您的示例格式错误。
C