任何人都可以告訴我,在gcc源代碼中的哪個函數負責在C文件中查找宏並使用實際值對其進行重新計算?海灣合作委員會源代碼中的函數
我想知道這個函數,因爲我必須對它進行更改才能記錄日誌,因此最後我的日誌文件將包含所有宏的使用位置和它的行號。
任何人都可以告訴我,在gcc源代碼中的哪個函數負責在C文件中查找宏並使用實際值對其進行重新計算?海灣合作委員會源代碼中的函數
我想知道這個函數,因爲我必須對它進行更改才能記錄日誌,因此最後我的日誌文件將包含所有宏的使用位置和它的行號。
它是由預處理器在生成輸出文件之前完成的。如果你想看到它在做什麼,儘量GCC-E
從人的gcc:
-E Stop after the preprocessing stage; do not run the compiler proper.
The output is in the form of preprocessed source code, which is sent to
the standard output.
我建議使用clang
這種類型的任務。它有很好的文檔記錄,您不需要更改其來源,因爲它可以通過插件系統進行擴展。
在你的情況下,你創建一個基於PPCallbacks
類的插件並覆蓋它的MacroExpanded
方法以及其他任何你認爲有用的方法。 This是一個簡單的起點。
感謝您的回覆。但我希望在gcc源代碼中找到並替換宏的確切功能。 – user2060958
目前GCC在編譯器中嵌入了預處理器,它不再是一個單獨的程序。 – vonbrand