我需要了解来自C标头的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正在这样做。为什么不简单地省略&lt; name&gt;标签?既然它在那里,@5
指的是什么?如果不出意外,我需要理解“@
”的使用,以确定是否/何时可以忽略它。
在另一种情况下,这样的结构声明。
typedef struct {
struct {
int abc;
} abcStruct;
} abcTypedef;
。生成(部分)这样的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)。我需要知道如何找到这个名字,以便我可以让程序得到它。
答案 0 :(得分:1)
@nn
是无名类型的占位符。 Doxygen内部为这些类型提供了一个唯一的名称,因此可以引用它们,正如您的第二个示例所展示的那样。
在输出中,它们通常被省略。 XML输出更多是doxygen内部的转储,因此它们仍然可见。