gpt4 book ai didi

c++ - 为什么在 C++ 中显式声明 "inline"

转载 作者:IT老高 更新时间:2023-10-28 22:35:46 24 4
gpt4 key购买 nike

Possible Duplicate:
When should I write the keyword 'inline' for a function/method?

所以这是一个困扰我一段时间的问题,我无法得到明确的答案。我的理解是,一个好的编译器通常会意识到内联函数既安全又有利,如果打开优化,它将内联所有此类函数,因为它们被明确标识为内联函数由程序员决定。此外,编译器会识别出内联函数何时不安全/不明智,并且在这种情况下会简单地忽略程序员对内联函数的请求。

因此,我想知道将函数明确声明为内联函数有什么好处?只要打开优化,编译器就会内联它认为内联的所有函数,并且只内联那些函数。

由于嵌套的 h 文件,我发现了一些关于内联保护以防止多重定义的讨论,但肯定 #ifdefine'ing header 源代码是更好的做法,并且再次呈现关键字 inline void 的使用?

最佳答案

您了解编译器优化。您对 inline 是什么的假设是错误的。尽管名称 inline 不是为了优化。 inline 主要是“违反” one definition rule逍遥法外。基本上,它告诉链接器许多翻译单元可以看到该定义,因此它不应该在多个翻译单元上找到它。

一些编译器可能会将其视为内联函数的提示,但这完全取决于编译器,完全可以忽略该提示。

标题保护仅防止同一翻译单元上的多个定义。它们不适用于翻译单元。

关于c++ - 为什么在 C++ 中显式声明 "inline",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507959/

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