我正在编译下一个简单的示例:
#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-once和
-finline-small-functions标志够吗?
为什么即使启用-Winline标志也没有警告?
最佳答案
inline
关键字是优化程序的提示。由于您正在使用-O0
进行编译,因此不会进行优化。
gcc documentation表示有关-Winline
的信息:
有什么规则可以声明为inline
以及gcc用来决定是否应内联声明为inline的函数的启发式规则。
您可以阅读有关inline
关键字here的更多信息。
(为回答第二个问题而编辑。)