內聯函式是否真的內聯,和編譯選項有關

2021-10-06 01:26:29 字數 449 閱讀 2155

對於inline函式,如果gcc的優化選項未開啟的話(我們core中的優化選項是o0,等價於未開啟),inline函式實際上是不生效的。

未開啟gcc優化的情況下,如果要使用inline函式,可以使用__attribute__ ((always_inline))屬性。

static inline void test_inline()

static __attribute__ ((always_inline))  void test_inline_attr()

arm-hisiv200-linux-gcc -s -o0 inline.c

編譯出來的彙編,test_inline未內聯,test_inline_attr內聯了

arm-hisiv200-linux-gcc -s -o1 inline.c

編譯出來的彙編,test_inline和test_inline_attr均內聯了

gcc 內聯函式編譯報錯

一段很簡單的 使用了內聯函式,編譯竟然報錯。在這裡記一下加深記憶。include include inline int sum int a,int b int main int argc,char ar 編譯結果 gcc test.c d msys64 tmp cc49osy4.o test.c t...

隱式內聯函式和顯式內聯函式

讓乙個函式成為內聯函式,隱式的為在類裡定義函式,顯式的則是在函式前加上inline關鍵字說明。inline1.cpp c primary created by amesty on 16 5 11.include include 顯式內聯 include using namespace std cla...

內聯函式和巨集

1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...