gcc __attribute__关键字举例之visibility
生活随笔
收集整理的這篇文章主要介紹了
gcc __attribute__关键字举例之visibility
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
visibility用于設置動態鏈接庫中函數的可見性,將變量或函數設置為hidden,則該符號僅在本so中可見,在其他庫中則不可見。
g++在編譯時,可用參數-fvisibility指定所有符號的可見性(不加此參數時默認外部可見,參考man g++中-fvisibility部分);若需要對特定函數的可見性進行設置,需在代碼中使用__attribute__設置visibility屬性。
?編寫大型程序時,可用-fvisibility=hidden設置符號默認隱藏,針對特定變量和函數,在代碼中使用__attribute__((visibility("default")))令該符號外部可見,這種方法可用有效避免so之間的符號沖突。
//.cpp
__attribute ((visibility("default"))) int engine_init(config_ *cfg)
{}
//makefile?
CC = g++
CFLAGS += -Wall -Werror ${HDTCL} -fPIC ?-fvisibility=hidden
結果是:
engine_init接口外部可見,其他沒有添加__attribute ((visibility("default")))說明的接口外部不可見。
總結
以上是生活随笔為你收集整理的gcc __attribute__关键字举例之visibility的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pthread_create函数 参数不
- 下一篇: localtime与localtime_