使用的情境
假設我們不知道外部是否會提供 foo() 這個 function,若沒有則用自己的 foo()。    extern int func(void);
    int __attribute__((weak)) func(void)
    {
        return 0;
    }備註 - 不會在動態函式庫 (.so) 中生效
string.so    void real_func()
    {
        printf("strong func\n");
    }    void real_func() __attribute__((weak))
    {
        printf("weak func\n");
    }    extern void real_func();
    void main()
    {
        real_func();
    }    // 動態連結無效,只看順序
    gcc main.c -lstrong -lweak // 輸出 : strong func
    gcc main.c -lweak -lstrong // 輸出 : weak func
    // 正常 .o 檔
    gcc main.c weak.o strong.o // 輸出 : strong func
    gcc main.c strong.o weak.o // 輸出 : strong func參考資料 :
https://www.itread01.com/content/1541531526.html
 

0 意見:
張貼留言