程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> #pragma weak

#pragma weak

編輯:關於C語言

采用 #pragma weak name 形式時,指令使 name 成為弱符號。鏈接程序沒有找到 name 的符號定義時,不會顯示錯誤消息,也不會出現符號的多個弱定義的錯誤消息。鏈接程序僅執行第一個遇到的定義。

如果另一個編譯單元有函數或變量的強定義,那麼 name 將鏈接到它。如果沒有 name 的強定義,那麼鏈接程序符號的值為 0。

Example1

編譯單元A cu1.c

 <stdio.h>
  weak foo

 *= & (ptr == 

編譯單元B cu2.c

 foo = ;

只編譯單元A:gcc cu1.c && ./a.out ,執行if語句。

編譯兩個單元:gcc cu1.c cu2.c && ./a.out ,執行else語句。

Example2

cu3.c

 <stdio.h>
  foo( weak foo

 (foo !=

編譯 gcc cu3.c && ./a.out ,提示foo未被定義。

Example3

編譯單元A cu4.c

 <stdio.h>
  foo( foo1( weak foo = foo1

編譯單元B cu5.c

 <stdio.h>

 foo(

只編譯單元A:gcc cu4.c && ./a.out ,執行foo1。

編譯兩個單元:gcc cu4.c cu5.c && ./a.out ,執行foo。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved