連結器與載入器與執行檔格式
在C語言中以static定義函式時(例:static int helper(void)),下列關於其效果的敘述何者正確?
- A該函式在程式執行期間不會一直留在記憶體中
- B該函式只能從檔案內部看見,即使其他檔案中有同名函式也不會衝突
- C該函式會比其他任何函式都先執行
查看答案與解析
正確答案:B. 該函式只能從檔案內部看見,即使其他檔案中有同名函式也不會衝突
在函式或全域變數上加static會成為內部連結(internal linkage),符號只在該檔案內使用,無法從其他檔案參照。不僅能避免名稱衝突,編譯器也能得知該函式不會被其他地方呼叫,因此更容易進行內嵌展開(inline)及刪除未使用函式等最佳化。
- A. 函式的程式碼在執行期間一直都在記憶體中。
- B. 正確。會成為內部連結。
- C. 執行的順序不會改變。