gpt4 book ai didi

c++ - 我是否需要 .CPP 文件?仅使用 header 并使所有内容内联?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:20 25 4
gpt4 key购买 nike

GCC 4.6.1,特别是。

我知道 CPP 文件用于将接口(interface)与实现分开;现在不感兴趣。

查看this , 我看不出有任何理由不只使用标题和内联的所有函数。

性能是一个问题,但我不认为这种方法会使事情变慢。我不想要的是让通常内联的关键部分变得更慢,因为一切都是内联的。如果这是有道理的话。

最佳答案

主要问题是编译时间,真的。

如果所有内容都包含在单个“主”编译单元中,那么如果您更改单个文件中的单个字符,则必须重新编译所有内容。

另一方面,与使用多个编译单元相比,完全重建很可能更快(在这种情况下,必须多次编译相同的头文件,并且链接器将有更多工作要做。使用单个编译单元,每个 header 只需要处理一次,链接器的工作非常简单)

对于多个 .cpp 文件,您可以对其中一个进行更改,并且只需要重新编译那个文件。

但是一些流行的库是只有标题的。这绝对是可行的。

性能方面,它应该相同或更快。您为编译器提供了对整个代码的完全可见性,这意味着它可以轻松地跨函数调用进行优化,并内联任何它喜欢的内容。

请注意,您永远不会强制编译器内联。 inline 关键字(以及其他具有相同效果的技巧)不会告诉编译器“这必须内联”。但是通过抑制单一定义规则 (ODR),它们允许您将一个定义包含到多个编译单元中,因此编译器内联变得更容易,如果它选择这样做的话

但这意味着您无需担心内联所有内容。编译器只会内联尽可能多的内容。

关于c++ - 我是否需要 .CPP 文件?仅使用 header 并使所有内容内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552045/

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