C++ 内联函数-自动内联

C++ 内联函数-自动内联,c++,function,inline,C++,Function,Inline,当在类声明中定义短函数时,它会自动生成内联函数 我的问题是, 自动衬里的功能应该有多短?有没有限制 有没有办法知道一个函数是自动对齐的 自动衬里的功能应该有多短?是 这有什么限制吗 没有硬限制(或者更准确地说,是的,我们可以找到给定系统的上限,但在任何地方都找不到指定的上限)。编译器试图预测在特定情况下此过程的优点。如果编译器决定内联函数将使代码变慢,或使代码变大,那么它将不内联函数。如果由于语法依赖性(例如其他代码使用函数指针进行回调,或者像在动态/静态代码库中那样从外部导出函数),它也不会这

当在类声明中定义短函数时,它会自动生成内联函数

我的问题是,

  • 自动衬里的功能应该有多短?有没有限制
  • 有没有办法知道一个函数是自动对齐的
  • 自动衬里的功能应该有多短?是 这有什么限制吗
  • 没有硬限制(或者更准确地说,是的,我们可以找到给定系统的上限,但在任何地方都找不到指定的上限)。编译器试图预测在特定情况下此过程的优点。如果编译器决定内联函数将使代码变慢,或使代码变大,那么它将不内联函数。如果由于语法依赖性(例如其他代码使用函数指针进行回调,或者像在动态/静态代码库中那样从外部导出函数),它也不会这样做。还要记住,标记函数
    inline
    只是表达一个愿望,编译器没有义务这么做。 在C中,任何具有内部链接的函数都可以内联,但具有外部链接的函数受到限制

  • 有没有办法知道一个函数是自动对齐的
  • 您可以反汇编二进制文件,然后查看是否有对函数的调用,或者它是否在行中


    1)询问您的编译器,2)检查机器代码。内联只是给编译器的一个提示,编译器可能遵循也可能不遵循类定义中定义的任何函数都会自动声明为内联。函数体的长度与此无关。函数是否会被内联到生成的机器代码中,这是一个完全独立且基本无关的问题