阿摩線上測驗 登入

申論題資訊

試卷:99年 - 99 專技高考_電子工程技師:電子計算機原理#46458
科目:計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)
年份:99年
排序:0

申論題內容

二、說明一般程式語言中的巨集(macro) 和副程式(subroutine)有何差別?(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

巨集(Macro):在編譯時期進行展開,適合簡單的文字替換和代碼片段重用,無類型檢查,容易引發錯誤。
副程式(Subroutine):在程式執行時調用,適合封裝和重用複雜的邏輯功能,支持類型檢查和錯誤處理,雖有調用開銷但增強了代碼的可維護性。

在程式語言中,巨集(macro)和副程式(subroutine)都是用來重用程式碼的一種方式,但它們在實現和用途上有一些重要的區別:

巨集(Macro)

  1. 定義與使用

    • 巨集是一種編譯器預處理器指令,通常在程式碼編譯之前進行展開。
    • 巨集使用定義(通常使用#define或macro指令)來指定一段程式碼或一個代碼片段,可以包含參數。
  2. 展開方式

    • 巨集在編譯過程中進行展開,這意味著每次巨集被調用時,它的內容都會替換到調用的位置。
    • 巨集的展開是文字替換,並不是執行過程。
  3. 執行效率

    • 由於巨集是在編譯時期展開的,不涉及函數調用的開銷,因此在某些情況下可以提高執行效率。
    • 但是,如果巨集被多次使用,會導致編譯後的程式碼變大,增加了程式的大小。
  4. 用途

    • 巨集常用於簡單的文字替換、常量定義、以及避免重複編寫相似的代碼片段。
    • 由於巨集不進行類型檢查,容易引發難以發現的錯誤。

副程式(Subroutine)

  1. 定義與使用

    • 副程式是程式中的一段可以被調用的獨立代碼塊,通常被稱為函數(function)或程序(procedure)。
    • 副程式通過函數或程序名稱調用,可以接受參數並返回結果。
  2. 執行方式

    • 副程式在程式執行過程中被調用,每次調用時會跳轉到副程式的代碼,執行完後返回調用點。
    • 副程式調用涉及調用堆疊的操作,包括參數傳遞和返回地址的保存。
  3. 執行效率

    • 副程式調用有一定的開銷,包括參數傳遞和控制權的轉移。
    • 但副程式的代碼僅在一個地方定義和存儲,因此不會像巨集那樣導致程式碼膨脹。
  4. 用途

    • 副程式用於實現邏輯功能的封裝和重用,增強程式的可讀性和維護性。
    • 副程式支持類型檢查、返回值和錯誤處理,更適合於複雜邏輯的實現。
  •