2015-03-03 107 views
1

我需要解析頭文件。 我的目標是從頭文件中搜索特定的結構,並提取結構變量的值和偏移量。C++頭文件解析

任何人都可以通過省略註釋以及如何從頭解析宏來提示解析頭文件的最佳方法嗎?

+0

http://clang.llvm.org/doxygen/group__CINDEX.html – deviantfan 2015-03-03 06:46:20

+0

@deviantfan您可以請解釋如何使用該API。因爲我需要解析包含超過100個結構的完整頭文件並找到我需要的結構。然後我需要讀取結構變量及其偏移量以將其存儲在內存中。 – IPS 2015-03-03 06:51:47

+1

@HariPrabhakaran:不要指望處理C++複雜性的設備的API「簡單」。您將不得不支付學習如何使用C++解析引擎的費用,並且還需要花費您在代碼中學習C++黑暗角落的代價,以及API如何處理這種類型的東西。 – 2015-03-03 06:56:18

回答

3

解析C++很困難。您可能想要使用現有的解析器。我知道的4那可能是有用的:

  • 愛迪生設計集團前端
  • 鏘的C++解析器
  • DMS軟件再造工具包和C++ 14的前端
  • GCC(通過熔融)

其中大多數不會「解析」宏;他們想要擴展他們使用預處理器。所以宏和PP條件從解析樹中消失。 DMS可以進行「有限」的預處理,並收集/保留在結構良好的地方以及它們常見的各種地方發現的預處理器指令和宏。

解析頭文件是真的艱難;他們往往會加載來自許多以前版本軟件的條件和垃圾,以及來自特定供應商的成語。 (MS的標題中有一些驚人的怪異東西)。除非你正在討論解析你的頭文件,否則確保你檢查你選擇的工具可以處理你實際處理的C++方言。

+0

感謝您的信息。但我的問題是,我需要在運行時讀取頭文件的內容。在運行時,我需要解析頭文件中的結構並存儲在內存中。你能提出建議嗎? – IPS 2015-03-03 07:21:20

+0

在運行時?然後,您需要找出一種方法,在應用程序啓動後將這些小狗加載到您的應用程序空間中(我敢打賭這真的很尷尬),將您的應用程序*移植到這些(更可能)的*中,或者調用其中的一個作爲一個需求子進程。你試圖完成什麼,需要在運行時讀取這些數據? – 2015-03-03 11:25:05