Maguyva 對 C 的支援:系統與嵌入式程式碼的呼叫圖
在 C 裡,呼叫圖就是架構。代理應該先讀懂它,再動手編輯。
副檔名
.c, .h
在 C++ 中,名稱並不唯一。send 可能是一個自由函式,同時是三個類別的成員,還是第四個類別中的覆寫。命名空間、樣板,以及類別外定義(例如 .cpp 檔案中的 Socket::send)會把一個型別拆散到許多檔案中。文字搜尋會傳回所有相符項目,卻無法告訴代理一次呼叫究竟到達哪一個。
Maguyva 在為類別、成員與呼叫建立索引時,會附上它們的擁有者,讓代理在編輯之前就能沿著真實的結構前進。
Maguyva 涵蓋常見的 C++ 原始檔與標頭檔副檔名,包括 .cpp、.cc、.cxx、.hpp、.hh 與 .hxx。類別、結構與函式都會被擷取,像 void Socket::send() 這樣的類別外定義,會歸屬到其擁有者類別與命名空間。虛擬成員會被記錄,樣板參數也是簽章的一部分。
接收者型別推斷會追蹤參數、區域宣告、欄位、範圍式 for 迴圈與 auto,並能看穿 unique_ptr、shared_ptr 與 optional,因此像 conn->send() 這樣的呼叫可以解析到正確的類別。基底類別子句會轉為繼承關係,new 運算式則視為實例化。
與 C 相同的匯出與註記巨集遮蔽同樣適用。約 273 個標準函式庫名稱(std::cout、std::endl、printf 等)會從關係中過濾掉。圖譜會記錄呼叫、標頭引入、繼承、覆寫、實例化、型別參照、讀寫,以及 throw 邊。
Renderer::draw,又是誰呼叫它?」(dependency_search)OrderBook::match 及其所有呼叫端。」(find_symbol)get_task_context).h 同時出現在 C、C++ 與 Objective-C 的副檔名清單中,因此在 C 與 C++ 混合的程式碼樹中,標頭檔會由這些設定檔共用。std:: 的用法請使用 text_pattern_search。最適合的情境
代理工作流程
引擎細節
實用的 MCP 進入點
需要定義與呼叫端時,以 `OrderBook::match` 這類限定名稱查找。
在變更簽章之前,對基底類別或虛擬方法使用它,找出覆寫與呼叫端。
適合用於「說明一則行情訊息是如何抵達策略引擎的」這類提示。