[英]How do I extract a specific function from a C/C++ source code file for subsequent processing
我正在尋找一種從某些C / C ++源代碼中打印出特定功能的簡便方法。 例如,假設test.c中定義了幾個函數。 我希望能夠打印出僅與那些功能之一關聯的源代碼。
編輯:對不起,我應該更加明確自己的最終目標。 我希望將功能打印到屏幕上,以便可以使用wc
來獲取此特定功能的字數。 另外,我希望它成為命令行工具鏈的一部分,因此不能手動輸入文件並選擇文本。
我通常在emacs
使用print-region
(最好是print-region-with-faces
)。 但是,它不是自動的,我必須手動選擇區域。
也可以使用其他語言。
以下是由於湯姆·史密斯的評論:
(defun print-fn (interactive)
(save-excursion (mark-defun)
(print-region)))
如果您喜歡這個,請點擊湯姆用戶頁面上的鏈接,看看他是否值得您投票...
做這個CW,所以我不會從支持Tom的好想法的人中受益。 干杯。
澄清后進行編輯:這似乎並不是針對OP的實際問題。 唉。
打印功能的最終目的是什么?
您是否要這樣使用:
if (error == Foo())
{
PrintFunction(foo);
exit(1);
}
有更簡單的方法可以輸出錯誤所在的位置。 如果我對您要解決的問題有更好的了解,我可能會提供更多幫助。
有關如何實現此類PrintFunction()的想法:
- 有一個環繞函數的數據結構,其中包含:函數行的開始,函數行的結束以及可能指向該函數的指針。
- 編寫一個函數,該函數根據源文件的編號打印出一行。
__FILE__
為您提供源文件名。- 知道了函數在代碼中所處位置的開始和結束之后,打印該函數將變得很簡單。
這有一個煩人的陷阱,那就是需要更新函數在文件中所在位置的行號。 但這可以用宏解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.