函数没有用g ++内联

时间:2015-03-02 22:18:51

标签: c++ gcc g++ inline

我正在编译下一个简单的例子:

#include <iostream>

struct PP
{
    inline void wInline();
}

inline void PP::wInline()
{
    std::cout << "hola" << endl;
}

int main()
{
    PP pp;
    pp.wInline();
    return 0;
}

以这种方式:

g++ -O0 -finline-functions -finline-functions-called-once
-finline-small-functions -Wall -Wextra -pedantic -std=c++11 -Winline
main.cpp

使用gcc 4.8.2并且没有内联wInline。

是-finline-functions,-finline-functions-called-once和 -finline-small-functions标志足够了? 为什么即使启用-Winline标志也没有警告?

1 个答案:

答案 0 :(得分:1)

inline关键字是优化程序的提示。由于您使用-O0进行编译,因此无法进行优化。

gcc documentation说明-Winline

  

如果无法内联声明为内联的函数,则发出警告。

有哪些函数可以声明inline的规则以及gcc用来决定是否应该内联声明为内联的函数的启发式。

您可以详细了解inline关键字here

(编辑回答第二个问题。)