本文目錄一覽:
C語言關鍵字inline問題,求高人指點。
內聯inline是給編譯器的優化提示,如果一個函數被編譯成inline的話,那麼就會把函數裡面的代碼直接插入到調用這個函數的地方,而不是用調用函數的形式。如果函數體代碼很短的話,這樣會比較有效率,因為調用函數的過程也是需要消耗資源的。但是你inline只是給編譯器的提示,編譯器會根據實際情況自己決定到底要不要進行內聯,如果函數過大、有函數指針指向這個函數或者有遞歸的情況下編譯器都不會進行內聯。
C中函數inline定義問題,求解釋。。。。
你沒有給出具體源碼,所以只能猜,據我所知,有一種情況可能符合你的描述:
這種用法,同一個文件內的inline
test函數會被內聯展開,其他文件的test函數,會編譯成普通函數來調用。
根據你的提問可以理解為:abc.h中的test函數,被abc.h內聯展開。abc.c中的test函數,被abc,c調用,與abc.h裡面的test無關。如果還有def.c調用test,那麼調用那個的是abc.c中的。前提是abc.c和def.c不包含abc.h,如果包含abc.h那麼調用test函數的地方,會被abc.h中的test函數進行內聯展開。
GCC編譯器和
C99編譯器代碼有所不同,都可能能達到你描述代碼的要求,說可能是因為我只在gcc編譯器上編譯過類似代碼,c99的用法是網路文章說的,我沒試過,所以只能說可能。
嵌入式C語言中的__inline__ 是什麼意思
_inline_
等同於inline,
不過inline在C中也可用,用gcc編譯,功能如前兩帖所述
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153484.html