2016-02-20 78 views
1

我需要從C頭文件中瞭解由doxygen生成的XML文件的一個方面:在一些標籤的文本中使用'@'後跟一個數字(「@nn」)。doxygen XML輸出:標記文本中的「@nn」的含義?

我見過這種符號在兩種情況下使用(但可能會有更多)。

在一種情況下,@nn似乎是匿名元素(如枚舉)名稱的佔位符。例如,像這樣的枚舉聲明。

enum { 
    int ANONYMOUS_XYZ = 4; 
}; 

產生這樣的XML:

<memberdef kind="enum" id="..." prot="public" static="no"> 
    <name>@5</name> 
    <enumvalue id="..." prot="public"> 
     <name>ANONYMOUS_XYZ</name> 
     <initializer>= 4</initializer> 
    </memberdef> 

我明白了什麼是doxygen的在這裏做的,但我想知道爲什麼doxygen的是做什麼的。爲什麼不簡單地省略<名稱>標記?既然它在那裏,@5是指什麼?如果沒有別的,我需要了解'@'的這種用法,以確定是否/何時我可以忽略它。

在另一種情況下,像這樣的結構聲明。

typedef struct { 
    struct { 
     int abc; 
    } abcStruct; 
} abcTypedef; 

.generates(部分)這樣的XML:

<compounddef id="..." kind="struct" prot="public"> 
    <compoundname>abcTypedef</compoundname> 
    <sectiondef kind="public-attrib"> 
     <memberdef kind="variable" id="..." prot="public" static="no" mutable="no"> 
     <type>struct abcTypedef::@28</type> 
     <definition>struct abcTypedef::@28 abcTypedef::abcStruct</definition> 
     <argsstring /> 
     <name>abcStruct</name> 
     </memberdef> 
    </sectiondef> 
    </compounddef> 

這裏@nn顯然指的是一個真實的元素名稱(在這種情況下abcStruct)。我需要知道如何找到這個名字,以便我可以讓程序得到它。

回答

1

@nn是無名類型的佔位符。 Doxygen在內部給這種類型一個獨特的名稱,所以他們可以參考,因爲你的第二個例子很好地演示。

在輸出中它們通常被省略。 XML輸出更多的是doxygen內部的轉儲,所以它們仍然可見。

+0

我明白你在說什麼,但它似乎給我帶來了一個不可能的問題。我的程序使用由兩個項目構建生成的XML來識別構建之間的差異。如果一個構建將此特定typedef稱爲「@ 28」,而下一個將其稱爲「@ 29」,那麼我怎麼能說它們代表了相同的元素? –