gpt4 book ai didi

c++ - 为什么C++中存在 `inline`关键字?

转载 作者:行者123 更新时间:2023-12-01 15:10:47 24 4
gpt4 key购买 nike

我正在通过 this page 学习 C++ .

在上面的页面和 this page ,它表示现代编译器足够聪明,可以决定哪一方在函数内联方面具有更好的性能。在大多数情况下,编译器比人类更聪明。

所以,我认为我们可以使用inline如果我们想强制编译器将函数视为内联函数,但事实并非如此。它表示,即使该函数被声明为内联,编译器也可以(通常)忽略该关键字。

这是否意味着函数的内联性不是由 inline 决定的关键字,而是编译器有最终决定权吗?如果是这样,那么程序员显式声明函数为内联不是没有用吗?

最佳答案

以它定义时的借口来看,它似乎是一个很好的优化,但自 C++17 以来它现在没有任何值(value)。

它现在意味着它可以有多个相同的定义,并且需要在使用它的每个翻译单元中进行定义。

Does it mean that the function's inline-ness is not decided by the inline keyword, but the compiler has the entire privilege to decide it?

是的。这并不取决于您是否使用内联。编译器可以自行识别是否内联函数。

If so, then isn't it useless for a programmer to explicitly declare function as inline?

内联函数的用法请引用上面提到的。对于问题标题,inline 关键字适用于 inline variables (C++ 17)同样,它允许在多个翻译单元中定义此类变量,遵循一个定义规则。如果定义多次,编译器会将它们全部合并到最终程序中的单个对象中。

关于c++ - 为什么C++中存在 `inline`关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61005345/

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