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

在C語言中以static定義函式時(例:static int helper(void)),下列關於其效果的敘述何者正確?

  1. A該函式在程式執行期間不會一直留在記憶體中
  2. B該函式只能從檔案內部看見,即使其他檔案中有同名函式也不會衝突
  3. C該函式會比其他任何函式都先執行
查看答案與解析

正確答案:B. 該函式只能從檔案內部看見,即使其他檔案中有同名函式也不會衝突

在函式或全域變數上加static會成為內部連結(internal linkage),符號只在該檔案內使用,無法從其他檔案參照。不僅能避免名稱衝突,編譯器也能得知該函式不會被其他地方呼叫,因此更容易進行內嵌展開(inline)及刪除未使用函式等最佳化。

  • A. 函式的程式碼在執行期間一直都在記憶體中。
  • B. 正確。會成為內部連結。
  • C. 執行的順序不會改變。
練習這個領域 前往領域頁面

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

  1. 在C語言中寫下「extern int count;」時,下列關於其意義的敘述何者正確?
  2. 關於Linux等系統常用的ELF格式檔案,下列何者正確?
  3. 執行檔的.text區段中存放的是下列何者?
  4. 在C語言中,寫在檔案外側的全域變數「int limit = 100;」,一般會放在哪個區段?
  5. 關於.bss區段的特徵,下列何者正確?

這個領域的比較