1. 程式人生 > >會被自動inline的條件

會被自動inline的條件

想用GDB去斷一個類裡的函式,發現不行,被編譯器自動轉成了inline了,

查了一些資料得知了會被自動變成inline函式的條件

  • 有可能會被inline的情況
    1. 在函式定義的時候,加上inline關鍵字
    2. 函式較短,沒有迴圈或遞迴,用-O2或-O3編譯
    3. 類成員函式,在類定義的時候,直接寫了函式體,而且函式體較短
  • 肯定不會被inline的情況(只要滿足任一條件,不管上足上面多少個條件,都不會inline)
    1. 直接或間接遞迴呼叫到了本身
    2. 函式內有迴圈
    3. 函式較長(具體多長我暫時不清楚,好像是和一個-finline-limit引數有關)
    4. 函式體的定義在當前函式的後面(也就是先宣告,後使用,最後定義的函式)
    5. 用gcc編譯時,沒有加上任何-O引數
    6. 用了-no-inlie引數

想斷的函式屬於3,而且就是一個簡單的return類變數。