在方法定义中使用inline关键字是否会导致问题?

发布于 2024-12-11 16:35:38 字数 1432 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£噩梦荏苒 2024-12-18 16:35:38

取决于你的代码是什么样的。

但是不明白您的代码的含义?这肯定会给您带来问题。

为什么不尝试了解inline实际上做什么,而不是简单地了解它是否会导致任何问题?

C++ 中 inline 关键字的主要作用是使编译器抑制 ODR(单一定义规则)。因此,非内联函数必须恰好在一个翻译单元中定义。

内联 函数必须在使用它的每个翻译中定义。

因此,根据函数的定义方式和位置,inline 可能正确,也可能不正确。我建议您在正确的地方使用它。

Depends on what your code looks like.

But not understanding what your code means? That is definitely going to cause you problems.

Why don't you try to learn what inline actually does, rather than simply whether or not it's going to cause any problems?

The primary effect of the inline keyword in C++ is to make the compiler suppress the ODR (One Definition Rule). So a non-inline function must be defined in exactly one translation unit.

An inline function must be defined in every translation where it's used.

So depending on how and where your function is defined, inline may or may not be correct. I suggest you use it where its use is correct.

忆梦 2024-12-18 16:35:38

假设编译器不够聪明,无法忽略它,它可能会使您的编译输出更大并且运行速度更慢。一般来说,如果您有特定的目的,您应该只使用“register”或“inline”等优化关键字——在这种情况下,您知道编译器不知道的有用的东西。

在现代 CPU 上,内联通常是一种悲观而不是优化。这是因为函数的每个副本都必须从内存中获取,对其指令进行解码,并在各种缓存中使用其自己的空间 - 特别是分支预测缓存。

It may make your compiled output larger and run more slowly, assuming the compiler isn't smart enough to ignore it. Generally, you should only use optimizations keywords like 'register' or 'inline' if you have a specific purpose in mind -- a case where you know something useful that the compiler does not know.

On modern CPUs, inlining is frequently a pessimization rather than an optimization. This is because each copy of the function must be fetched from memory, have its instructions decoded, and uses up its own space in the various caches -- particularly the branch prediction cache.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文