一般的C++编译器,内联函数的实现是否能写在其他源文件中

发布于 2022-08-21 06:02:26 字数 170 浏览 17 评论 2

内联函数的实现如果写在其他源文件中,是否能被内联到
如果技术上要实现这点可能得在链接过程中做再次编译操作了
按以往的经验来看貌似在其他源文件中的函数是没法内联的
比较奇怪为什么一般编译器不实现跨文件内联
难道为了性能还非得把类的seter和geter函数的实现直接写头文件里了?

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

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

发布评论

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

评论(2

对你的占有欲 2022-08-25 20:20:14

  内联函数具有一般函数的特性,它与一般函数所不同之处只在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换。在使用内联函数时,应注意如下几点:
1.在内联函数内不允许用循环语句和开关语句。 如果内联函数有这些语句,则编译将该函数视同普通函数那样产生函数调用代码,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数只适合于只有1~5行的小函数。对一个含有许多语句的大函数,函数调用和返回的开销相对来说微不足道,所以也没有必要用内联函数实现。
2.内联函数的定义必须出现在内联函数第一次被调用之前。
3.类结构中所有在类说明内部定义的函数是内联函数。

http://www.cppblog.com/fwxjj/archive/...
这里说的还蛮详细的

空宴 2022-08-21 14:58:33

常见编译器都有这个功能,比如说
VS的/GL (Whole Program Optimization)编译选项. http://msdn.microsoft.com/en-us/libra...
我相信其他主流编译器,比如gcc,icc都会有这样的优化。

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