簡體   English   中英

未用g ++內聯的函數

[英]Functions not being inlined with g++

我正在編譯下一個簡單的示例:

#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(稱為一次)和-finline-small-functions標志是否足夠? 為什么即使啟用-Winline標志也沒有警告?

inline關鍵字是優化程序的提示。 由於您正在使用-O0進行編譯,因此不會進行優化。

gcc文檔說了關於-Winline

如果聲明為內聯的函數無法內聯,則發出警告。

有什么規則可以inline聲明以及gcc用來決定是否應內聯聲明為內聯函數的啟發式規則。

您可以在此處閱讀有關inline關鍵字的更多信息。

(為回答第二個問題而編輯。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM