ARM 強符號與弱符號 強引用和弱引用

2021-10-03 10:03:46 字數 368 閱讀 2101

強符號與弱符號:

可以通過使用"__attribute__((weakref))"這個擴充套件關鍵字來宣告對乙個外部函式的引用為弱引用:

這種弱符號和弱引用對於庫來說十分有用,比如庫中定義的弱符號可以被使用者定義的強符號所覆蓋,從而使得程式可以使用自定義版本的庫函式;或者程式可以對某些擴充套件功能模組的引用定義為弱引用,當我們將擴充套件模組與程式鏈結在一起時,功能模組就可以正常使用;如果我們去掉了某些功能模組,那麼程式也可以正常鏈結,只是缺少了相應的功能,這使得程式的功能更加容易裁剪和組合。

弱符號與強符號,弱引用與強引用

對c c 而言,編譯器預設函式和初始化了的全域性變數為強符號。未初始化的全域性變數為弱符號。此處弱符號與強符號均是針對定義來說的,不是針對符號的引用。也可以通過gcc的 attribute weak 來定義任何乙個強符號為弱符號。cpp view plain copy extern in ext i...

強符號和弱符號

在c語言中,函式和初始化的全域性變數 包括顯示初始化為0 是強符號,未初始化的全域性變數是強符號。關於多個強弱符號定義型別不一致的主要有下面三種情況 1.兩個或兩個以上強符號型別不一致 2.有乙個強符號,其他都是弱符號 3.兩個或兩個以上弱符號型別不一致 對於情況一,編譯會報符號重定義錯誤。mapa...

GCC中的強符號和弱符號及強引用和弱引用

u boot和kernel比較普遍地使用了 weak來定義函式。在include linux compiler gcc.h中 weak是這樣定義的 define weak attribute weak gcc通過 attribute weak 指令定義的函式或變數稱為弱符號 weak symbol ...