doxygen XML输出:标记文本中“@nn”的含义?

时间:2016-02-20 02:35:56

标签: xml enums doxygen

我需要了解来自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)。我需要知道如何找到这个名字,以便我可以让程序得到它。

1 个答案:

答案 0 :(得分:1)

@nn是无名类型的占位符。 Doxygen内部为这些类型提供了一个唯一的名称,因此可以引用它们,正如您的第二个示例所展示的那样。

在输出中,它们通常被省略。 XML输出更多是doxygen内部的转储,因此它们仍然可见。