【发布时间】:2015-09-15 11:58:43
【问题描述】:
我有一些关于在 C 和 C++ 中使用内联函数的问题。我被告知要在我经常使用的小功能上使用它,但我想确切地了解它是如何工作的。这里只是一个示例的 sn-p。
static inline point3D createPoint3D(float x, float y, float z){
point3D newPosition;
newPosition.x = x;
newPosition.y = y;
newPosition.z = z;
return newPosition;
}
它究竟做了什么,为什么它可以帮助代码运行得更快?这是 90 年代过时的优化吗?
为什么我只应该在小功能上使用它?如果我为大型功能这样做会不会很糟糕?
在大量函数上使用它是不是很糟糕?
【问题讨论】:
-
相关注意事项(如果您从未使用过 inline 很容易忘记):要使 inline 跨编译单元边界工作,您必须将函数的 body 放入 inline一个头文件,而不仅仅是原型,否则编译器在编译其他编译单元时将没有内联代码(另请参阅parashift.com/c++-faq-lite/inline-functions.html#faq-9.6)。
-
你在这里也有一些关于内联的很好的答案:stackoverflow.com/questions/3647053/…
-
请注意,在 C 中使用
inline与在 C++ 中使用inline完全不同。后者更直接。 See here 用于 C 讨论。 -
@M.M 谢谢,这是我五年前问的一个问题,现在我对这个话题有了更多的了解。
标签: c++ c optimization inline