gpt4 book ai didi

c++ - 外部链接的缺点

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:19 26 4
gpt4 key购买 nike

使用具有外部链接的符号(全局命名空间困惑/冲突除外)有什么缺点吗?例如,我认为如果我有一个我从不调用的函数,如果它有内部链接,编译器可以直接丢弃它,但如果它是外部链接,编译器必须保留该代码,因为以后有人可能会链接到它.它是否正确?还有其他缺点吗?

我问是因为我知道建议使用未命名的命名空间而不是 static 关键字,但是由于未命名命名空间中的符号仍然具有外部链接,它们会遭受上述缺点(如果我是对的),所以并不完全优于标准所说的静态函数。

最佳答案

未命名命名空间中的函数具有外部链接这一事实几乎完全是一个技术问题。因为它们有一个“ secret 的”翻译单元依赖的唯一标识符,所以不可能从不同的翻译单元命名它们。这意味着编译器可以假定它们永远不会被另一个翻译单元按名称调用。我所知道的大多数实现将未命名命名空间中的函数转换为局部符号而不是全局符号,就像具有真正内部链接的函数一样。

如果从未从定义它的翻译单元中调用它并且从未将其地址从翻译单元中获取和传递出去,则可以丢弃未命名 namespace 中的函数而不影响程序不是直接命名的函数调用。

关于c++ - 外部链接的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635639/

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