难道没有“内联”关键字GCC内嵌C ++函数?(Does GCC inline C++ functi

2019-09-01 07:07发布

请问GCC,编译C ++代码时,曾经尝试通过选择内联未标明的功能来优化速度inline关键字?

Answer 1:

是。 任何编译器是免费的,只要它认为这是一个好主意,内联的任何功能。 GCC做这一点。

在-02优化级别时,编译器认为它是值得做的事情(使用试探性算法),如果它不会增加代码的大小内联完成。 在-O3每当编译器认为这是值得做的事情,无论它是否会增加代码的大小,它完成。 此外,在所有优化级别(启用优化即是),这被称为只有一次静态的内联函数。



Answer 2:

是的,特别是如果你启用了优化的高水平。

还有就是你可以提供编译器禁用此标志:-fno内联函数。



Answer 3:

如果使用“-finline函数”或“-O3”将内联函数。 你也可以使用“-finline_limit = N”调整内嵌多少呢。



Answer 4:

“-O3此选项打开更昂贵的优化, 如内联函数

  • http://www.network-theory.co.uk/docs/gccintro/gccintro_49.html


Answer 5:

是的,确实如此,虽然它也将产生非内联函数体非staticinline ,因为这需要从其他翻译单元通话的功能。

对于inline的功能,它是不能提供的功能体,如果函数是在任何特定的翻译单元中使用,所以这是没有问题的一个错误。



文章来源: Does GCC inline C++ functions without the 'inline' keyword?