代码之家  ›  专栏  ›  技术社区  ›  Carl Seleborg

GCC是否在没有“内联”关键字的情况下嵌入C++函数?

  •  28
  • Carl Seleborg  · 技术社区  · 15 年前

    在编译C++代码时,GCC是否尝试通过选择内联的未标记的函数来优化速度? inline 关键字?

    5 回复  |  直到 15 年前
        1
  •  35
  •   AnT stands with Russia    15 年前

    对。任何编译器都可以在认为好的时候自由地内联任何函数。GCC也这样做。

    在-o2优化级别,当编译器认为值得执行时,将执行内联(使用启发式方法)。 如果它不增加代码的大小。在-o3,无论编译器是否会增加代码的大小,只要认为值得做,就可以完成。此外,在所有优化级别(即启用的优化),只调用一次的静态函数都是内联的。

        2
  •  7
  •   Marcin    15 年前

    是的,特别是如果您启用了高级优化。

    您可以向编译器提供一个标志来禁用这个命令:-fno内联函数。

        3
  •  3
  •   Chris Dodd    15 年前

    如果使用“-finline函数”或“-o3”,它将内联函数。您还可以使用'-finline_limit=n'来调整它的内嵌功能。

        4
  •  1
  •   Ape-inago    15 年前

    “-O3 此选项启用更昂贵的优化, 比如函数内联

        5
  •  1
  •   CB Bailey    15 年前

    是的,虽然它还将为非- static inline 函数,因为这对于来自其他翻译单元的调用是必需的。

    用于 内联 函数,如果函数在任何特定的翻译单元中使用,则无法提供函数体是错误的,因此这不是问题。