C 語法中static 和inline聯合使用


最近在學習階段,翻閱代碼。發現有一個用法比較讓我奇怪,就上網查了一下

?
1
static inline void somefunction( void );

這里是舉例說明,這行代碼是放在.h文件中的。

在此之前,如果對inline概念不了解的請自行wiki

http://zh.wikipedia.org/wiki/%E5%86%85%E8%81%94%E5%87%BD%E6%95%B0

但是因為自己用得比較少,所以沒有太關注,

當然也沒有inline修飾符前面要加static的概念

 

仔細想想:

1、首先,inline函數是不能像傳統的函數那樣放在.c中然后在.h中給出接口在其余文件中調用的,

因為inline函數其實是跟宏定義類似,不存在所謂的函數入口。

2、因為第一點,會出現一個問題,就是說如果inline函數在兩個不同的文件中出現,也就是說

一個.h被兩個不同的文件包含,則會出現重名,鏈接失敗

所以static inline 的用法就能很好的解決這個問題,

使用static修飾符,函數僅在文件內部可見,不會污染命名空間。

可以理解為一個inline在不同的.C里面生成了不同的實例,而且名字是完全相同的

 

PS: inline修飾符不同的編譯器不一樣,下次有空再補充 

IAR中需要手動開發 並直接可以使用,keil中直接__inline即可 只要不是O0就會有內聯處理@20140417


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM