在使用stm32的hal庫的時候,我們常常可以看到很多庫自帶的函式有很多是使用__weak修飾的,比如:
這個修飾符的作用是什麼呢?先看看單詞的意思:
我們可以知道這是弱的意思,具體弱在**?又是和什麼比較?
其實函式名稱前面加上__weak 修飾符,我們一般稱這個函式為「弱函式」。
加上了__weak 修飾符的函式,使用者可以在使用者檔案中重新定義乙個同名函式,最終編譯器編譯的時候,會選擇使用者定義的函式,如果使用者沒有重新定義這個函式,那麼編譯器就會執行__weak 宣告的函式,並且編譯器不會報錯。所以我們可以在別的地方定義乙個相同名字的函式,而不必也盡量不要修改之前的函式,。
關鍵字 volatile關鍵字的作用
1.volatile關鍵字是防止在共享的空間發生讀取的錯誤。只保證其可見性,不保證原子性 使用volatile指每次從記憶體中讀取資料,而不是從編譯器優化後的快取中讀取資料,簡單來講就是防止編譯器優化。2.在單任務環境中,如果在兩次讀取變數之間不改變變數的值,編譯器就會發生優化,會將ram中的值賦值...
C static關鍵字作用
1.static修飾全域性變數 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。未加static的全域性變數,在符號表中是global符號,其他目標檔案可見,這樣的符號是要參與符號解析的。加了static之後,是local符號,其他目標檔案不...
C static 關鍵字作用
在全域性變數前加上static關鍵字,全域性變數就定義成了乙個全域性靜態變數。在區域性靜態變數之前加上static,區域性變數就成為乙個區域性靜態變數。在函式返回型別前加static,函式就定義為靜態函式。在類中,靜態成員可以實現多個物件之間的資料共享,並且使用靜態資料成員還不會破壞隱藏的原則,即保...