gpt4 book ai didi

c++ - 函数没有被 g++ 内联

转载 作者:行者123 更新时间:2023-11-30 05:46:42 25 4
gpt4 key购买 nike

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

#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 标志我也没有收到警告?

最佳答案

inline 关键字是对优化器的提示。由于您正在使用 -O0 进行编译,因此未进行任何优化。

gcc documentation这是关于 -Winline 的:

Warn if a function that is declared as inline cannot be inlined.

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

您可以阅读更多关于 inline 关键字的信息 here .

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

关于c++ - 函数没有被 g++ 内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com