gpt4 book ai didi

c++ - 内联关键字与标题定义

转载 作者:IT老高 更新时间:2023-10-28 12:55:55 26 4
gpt4 key购买 nike

在函数前使用 inline 关键字和在头部声明整个函数有什么区别?

所以...

int whatever() { return 4; }

.h:

inline int whatever();

.cpp:

inline int myClass::whatever()
{
return 4;
}

就此而言,这是做什么的:

inline int whatever() { return 4; }

最佳答案

有几个方面:

语言

  • 当一个函数用 inline 关键字标记时,它的定义应该在 TU 中可用,否则程序是不正确的。
  • 在类定义中正确定义的任何函数都被隐式标记为 inline
  • 标记为 inline(隐式或显式)的函数可以在多个 TU 中定义(尊重 ODR),而常规函数则不是这样。
  • 模板函数(未完全专门化)与 inline 函数获得相同的处理。

编译器行为

  • 标记为 inline 的函数将在每个需要的目标文件中作为弱符号发出,这可能会增加它们的大小(查找模板膨胀)。
  • 而编译器实际上内联调用(即在使用点复制/粘贴代码而不是执行常规函数调用)完全由编译器自行决定。关键字的存在可能会或不会影响决策,但它充其量只是一个提示

链接器行为

  • 弱符号合并在一起,在最终库中出现一次。一个好的链接器可以检查多个定义是否一致,但这不是必需的。

关于c++ - 内联关键字与标题定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103161/

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