gpt4 book ai didi

c++ - 两个静态库,两个不同的 vector 实现,链接器会做什么?

转载 作者:行者123 更新时间:2023-11-30 01:32:19 28 4
gpt4 key购买 nike

想象一下,我们有两个静态库,它们是用 std::vector 的不同实现构建的。这两个二进制文件都有 push_backpop_back 的代码(因为 vector 通常只是 header )。当我们试图在一个项目中同时使用这两个库时,链接器会做什么。它会报错吗?链接器是否可以删除这些方法中每一种方法的一个实现,以便可以进行以下操作:

push_back 来自第二个库的调用调用来自第一个库的push_back 实现

pop_back 从第一个库调用从第二个库调用 pop_back 实现

最佳答案

会报错吗?取决于您如何定义“错误”。

它可能不会在链接时给您一个错误。但它肯定会破坏你的可执行文件。链接器假定,当它遇到一个符号的多个定义时,它们是相同的,因此除了其中一个之外的所有定义都可以被丢弃。如果它们不相同,那么你就违反了单一定义规则,这意味着你正在进入未定义的行为领域。任何事情都可能发生。您很可能会看到随机崩溃。

关于c++ - 两个静态库,两个不同的 vector 实现,链接器会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948204/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com