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

第 14 題

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

思路引導 VIP

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

🤖
AI 詳解 AI 專屬家教

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

空間與時間的權衡

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

▼ 還有更多解析內容
📝 巨集特徵與原理
💡 巨集採文字替換,以記憶體空間換取執行速度。
比較維度 巨集 (Macro) VS 函式 (Function)
執行速度 快 (直接展開不需跳轉) — 慢 (有呼叫與返回開銷)
記憶體空間 較大 (多次呼叫多次展開) — 較小 (記憶體內僅存一份)
處理方式 預處理階段文字替換 — 執行階段進入副程式
堆疊操作 不需要 push/pop — 需要 push/pop 暫存
💬巨集適合短小精悍的程式碼片段,追求速度;函式適合複雜且多次重複邏輯,節省空間。
🧠 記憶技巧:VIP 會員可查看這題的記憶口訣與速記法
⚠️ 常見陷阱:VIP 會員可查看這題最常被誘答的陷阱整理
內聯函式 (Inline Function) 函式堆疊 (Stack Call) 預處理器 (Preprocessor)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

程式語言的分類特性與編譯執行機制
查看更多「[資訊] 計算機原理、網路概論」的主題分類考古題