連結器與載入器與執行檔格式

關於連結器對弱符號(weak symbol)的處理,下列何者正確?

  1. A弱符號永遠優先於其他的定義
  2. B若有同名的一般(強)定義,就使用該定義;沒有的話則使用弱定義
  3. C含有弱符號的檔案無法連結
查看答案與解析

正確答案:B. 若有同名的一般(強)定義,就使用該定義;沒有的話則使用弱定義

弱符號是「若沒有其他定義就使用這個」的備用定義。在嵌入式軟體中,常見的用法是以弱符號準備中斷處理常式的預設處理,若使用者撰寫了同名的函式,就會被替換成該函式。強定義之間重複時會出現重複定義的錯誤,但與弱定義重複時則不會出錯。

  • A. 相反,它會輸給強定義。
  • B. 正確。可準備能被取代的預設定義。
  • C. 可以正常連結。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. C++編譯器在函式名稱上附加參數型別等資訊以產生符號名稱的「名稱修飾(name mangling)」,其主要目的為下列何者?
  2. Linux的dlopen函式(相當於Windows的LoadLibrary)的用途,下列何者最為適切?
  3. 當100個行程使用相同的共用函式庫時,關於實體記憶體的使用方式,下列何者正確?
  4. 對目的檔進行反組譯時,發現呼叫外部函式printf之指令的跳躍目標是0這樣的暫時值。這個值會在何時被正確填入?
  5. 關於嵌入式開發中使用的連結器腳本(linker script)的功用,下列何者正確?

這個領域的比較