代码之家  ›  专栏  ›  技术社区  ›  Steve

有没有办法检查函数是否真的是内联的?

  •  5
  • Steve  · 技术社区  · 16 年前

    我必须检查编译器是否正在内联函数。有没有什么方法可以不用看汇编(我没有读过)。我别无选择,所以我宁愿我们不能讨论这样做的智慧。谢谢

    5 回复  |  直到 16 年前
        1
  •  1
  •   MSalters    16 年前

        2
  •  6
  •   DrPizza    16 年前

    如果您启用了警告C4714、C4710和C4711,它将为您提供关于哪些函数是内联的、哪些函数不是内联的相当详细的信息。

        3
  •  5
  •   Loki Astari    16 年前

    每个呼叫站点可能不同。

    因此,您使用的任何工具都可能给您一个误导性的答案。如果您使用一个工具来检查符号的存在(它可能存在,因为某些呼叫站点需要它,但它可能在其他站点内联)。相反,缺少符号并不意味着方法/函数没有内联,它可能是静态的(如文件静态),因此编译器不需要保留符号(但它没有内联)。

        4
  •  2
  •   gatorfax    16 年前

    使用/FAs编译器选项转储带有源代码的asm是我所知道的唯一可以确定的方法。

    注意:如果要强制函数内联,只需使用 __forceinline

        5
  •  0
  •   Overflowed    16 年前

    如果您真的不想跳转到汇编中,请将函数声明为uu forceinline,如果可执行文件变大,您就知道它没有被内联。