c++ - 为什么要在 C++ 中使用 'inline' 关键字?

标签 c++ inline compiler-optimization

我刚刚在 Microsoft Website 上研究了 C++ 关键字 inline 的使用和好处/缺陷。我理解所有这些。

我的问题是:如果编译器评估函数以查看内联它们是否会导致代码更高效,并且 inline 关键字只是对编译器的建议,那么为什么要用关键字有没有?

编辑:很多人提示我使用 __inline 而不是 inline。我想指出 __inline 是 Microsoft 特定的:所以它没有错,只是不一定是你习惯的。(还修复了网站链接)

EDIT2:重新格式化问题以指示 inline 关键字(用于所有 C++)而不是 Microsoft 特定的 __inline 关键字。

最佳答案

首先,不是__inline,而是inline

其次,inline 在单一定义规则中的作用不可否认是重要的。它允许您多次定义函数并让编译器处理它。

第三,关于实际的内联,这是您表达您对该函数的意见的方式,不仅是对编译器,也是对那些以后可能阅读您的代码的人。在许多情况下,这是一种发泄情绪的方式,可以这么说。基本上,这是您告诉其他人和您自己的一种方式:“我觉得这个函数太小(或太专业),无法证明调用开销是合理的,所以不要让我为这种讽刺负责。我做了我所做的一切可以。如果不是因为你愚蠢的公司范围编码标准,我会把它变成一个宏”。在这方面,它是一种正式评论

第四,看到您使用了特定于实现的关键字拼写,我注意到一些实现为您提供了替代关键字,让您有机会变得更……呃……有说服力 您希望内联该功能。在 MS 编译器中,它将是 __forceinline

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

相关文章:

c++ - C++ 中的二叉搜索树

javascript - React - 使用循环创建嵌套组件

typescript - 在 TypeScript 中内联类型定义

python - 我如何在 Django Admin 中要求内联?

haskell - 是否有类似于函数式编程的循环展开的优化?

c - 在禁用优化的情况下进行编译时,为什么clang不使用内存目标x86指令?他们有效率吗?

c++ - 如何从另一个方法调用指向方法的指针

c++ - 如何让 Vim 突出显示 Visual Studio 等 C++ 语法错误?

c++ - 为什么不使用只读 [] 运算符?

java - while 循环的奇怪行为