<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    C/C++源代碼的Include依賴關系圖

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    前一篇博文中我曾仔細介紹過如何查看C/C++代碼的依賴項關系圖,在這篇文章中我將會介紹如何使用Visualization and Modeling Feature Pack 工具包,查看C/C++源代碼的Include關系圖,這個功能是針對C/C++編程語言本身的特性而新加入的。在這里我依然會使用工程Hilo 作為案例,展示如何以圖形化的方式顯示工程中源代碼文件與頭文件之間Include關系。 
    首先,在Visual Studio下打開工程Hilo,在菜單欄中選擇菜單“體系結構->生成依賴關系圖->By Include File”

    RFID設備管理軟件

    第一次操作時,有時我們將會發現一個名為“Analyzing Files”的進度框會跳出,提示用戶“代碼正在解析中”,如圖:

    RFID設備管理軟件

    稍等片刻后,如下的DGML有向圖將會生成,這張圖除了展示工程Browser和Common內部源文件與頭文件的Include關系外,還顯示了工程之間,工程與外部頭文件的Include引用關系。 
    RFID設備管理軟件

    下面我將會使用自頂向下的方式給您解釋如何去閱讀和分析這張圖。點擊該圖右鍵菜單”分組->全部折疊”,我們將會得到下圖:

    RFID設備管理軟件

    這張圖很清晰地告訴我們在當前解決方案中包含2個C++工程,分別是Browser和Common。Browser???包含61個源文件/頭文件,而 Common中源文件/頭文件的數量是29。工程Browser中的源文件Include了工程Common和”外部”中的頭文件,而工程Common僅僅Include了“外部”中的頭文件。這里的browser.vcxproj和common.vcxproj比較容易理解,分別包含了這兩個工程中所有的源文件和頭文件,而在”外部”這個結點中,則包括了所有被工程Browser和common所Include,但不屬于這兩個項目的頭文件.讓我們展開”外部”節點, 我們發現其中包含2個名為“Windows SDK”和”C/C++Standard Library”的子節點,如圖:

    RFID設備管理軟件

    為了區分不同庫的頭文件,我們根據頭文件所屬領域的不同,我們將外部引用的頭文件分為兩類:“Windows SDK”和“C/C++ Standard Library”。節點“Windows SDK”下包含存儲路徑在“%WindowsSdkDir%\include”下的頭文件,而節點“C/C++ Library”下的頭文件的存儲路徑為“%VSINSTALLDIR%\vc\include”。在這里,工程Browser和Common Include的總共引用了“Window SDK”的13個頭文件,工程Browser和Common,以及“Windows SDK”庫引用了“C/C++ Standard Library”的 12個頭文件。 
    從上面的圖中,我們可以了解到整個解決方案的Include依賴關系圖的結構。然而,這個圖中有如此多的節點,我們如何來查看我們想要了解的某一個或一些文件的Include依賴關系呢?首先,我們可以通過Ctrl+F來找到我們想要找到的文件。按下Ctrl+F,然后輸入 “carouselpane.h”, Visual Studio將自動幫我們定位到所在的節點(如下圖),同時與該鏈接相連的所有鏈接將會被高亮,鏈接箭頭方向代表Include關系,如圖:

    RFID設備管理軟件

    源文件“carouselpane.cpp”include了頭文件”carouselpane.h”,在圖中將會有條始于節點 “carouselpane.cpp”,終于節點“carouselpane.h”的有向鏈接。停留鼠標在該鏈接上,顯示“導向按鈕”,點擊“導向按鈕” 中的“+”,我們將會被帶到源代碼文件”CarouselPane.cpp”

    RFID設備管理軟件

    在源代碼文件”carouselpane.cpp”中,代碼行#include “CarouselPane.h”被自動選中,這個操作詮釋了源文件“carouselpane.cpp”與“carouselpane.h”的 Include關系。點擊右鍵菜單“查看內容”,頭文件“carouselpane.h”將會被打開,

    RFID設備管理軟件

    在打開的頭文件“carouselPane.h”中,點擊右鍵菜單“Generate Graph of Include Files”,一張關于頭文件carouselPane.h Include”和Include By的依賴圖將會產生,如下圖:

    RFID設備管理軟件

    該圖所表達的語義是工程Browser下“Carouselpane.h”頭文件被3個.cpp文件Include的,并且該文件Include了 8個.h文件。 這樣,通過這樣的子圖,我們就能夠比較方便地看到某個文件的Include和Include By依賴關系圖了。

    總結: 
    “Include”依賴圖提供了一種以圖形化方式顯示源文件與頭文件間“Include”關系的方式,基于解決方案生成的“Include”圖可以幫我們理解工程間以及工程與庫頭文件的“Include”關系,而基于單個文件的“Include”圖可以幫我們進一步理解單個文件的“Include”和 “Include By”依賴關系。

     

     

    from:http://blogs.msdn.com/b/almcppcn/archive/2010/08/13/pound-include-dependency-graph-from-cpp-source-codes.aspx

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全