免費開始練習
moea_joint 113年 [資訊] 計算機原理、網路概論

第 14 題

關於巨集(Macro)之敘述,下列何者有誤?
  • A 執行速度快
  • B 被呼叫多次時需要的記憶體空間較少
  • C 編譯器會以巨集取代程式原本的敘述
  • D 可不需花費時間在堆疊的push與pop動作

思路引導 VIP

想像一下,如果你有一段很長的文字需要出現在文件的十個不同位置。第一種方式是「每次都直接把這整段文字完整地抄寫一遍」;第二種方式是「只寫一個簡短的編號,並請讀者看到編號時再去翻看後面的附錄」。請思考:如果你選擇第一種『直接抄寫』的方式,對於整份文件的總頁數(也就是存放空間)會產生什麼樣的變化?

🤖
AI 詳解 AI 專屬家教

恭喜你精準地辨識出巨集(Macro)的核心特性!這題的關鍵在於理解巨集與子程序(Subroutine)在處理機制上的本質差異。巨集在編譯階段會進行行內擴展(Inline Expansion),也就是編譯器會直接將巨集的程式碼「複製並貼上」到每一個呼叫處,這正是選項 (C) 所描述的運作方式。

空間與時間的權衡

正因為這種直接取代的機制,程式執行時不需要像函式呼叫那樣頻繁進行堆疊(Stack)pushpop 動作來存取返回位址或參數(選項 D),這大幅節省了環境切換的時間,從而提升執行效率(選項 A)。然而,這種「以空間換取時間」的做法是有代價的:當同一個巨集在程式中被多次呼叫時,該段代碼就會被重複嵌入多次,導致編譯後的執行檔體積增加。因此,選項 (B) 認為需要的記憶體空間較少,顯然與事實相反。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言概論與常見程式語言比較
查看更多「[資訊] 計算機原理、網路概論」的主題分類考古題