C++ 如何强制只提取特定的私有类成员?

C++ 如何强制只提取特定的私有类成员?,c++,doxygen,C++,Doxygen,我希望Doxygen只强制提取特定的私有类成员。我知道这个选项,但它提取了所有私人成员。我希望能够挑选和选择我想要提取的私人成员 例如,如下所示: class Foo { private: /** @forceextract * @brief Something about this function. */ void foo1(); /** @brief Something about this other function. */ void foo2

我希望Doxygen只强制提取特定的私有类成员。我知道这个选项,但它提取了所有私人成员。我希望能够挑选和选择我想要提取的私人成员

例如,如下所示:

class Foo {
private:
  /** @forceextract
    * @brief Something about this function.
    */
  void foo1();

  /** @brief Something about this other function.
    */
  void foo2();
};
虽然foo1的文档是私有的,但是应该提取它,但是foo2应该单独处理

可以这样做吗?

从中可以使用带标签的条件节,然后不将该节包含在启用的\u节下:

class Foo {
private:
  /** @brief Blah blah blah */
  void foo1();

  /// @cond COND1

  /** @brief This will be hidden! */
  void foo2();
  /** @brief So will this */
  void foo3();
  /** @brief This should be hidden too */
  int fooInt;

  /// @endcond
};
不必向所有要包含的字段添加条件并将所有这些条件添加到“已启用的节”列表中,只需向不希望包含的字段添加条件即可。在本例中,如果您没有将COND1添加到启用的_部分,那么它应该尊重未设置COND1的事实,因此不会在文档中包含foo2。确保您仍然将EXTRACT_设置为PRIVATE


编辑:对不起,我最初的回答是关于该部分的包含而不是不包含。

我想出了一个有点迂回的替代方案

class Foo {
#ifdef DOXYGEN_EXTRACT
public:
#else
private:
#endif
  /** @forceextract
    * @brief Something about this function.
    */
  void foo1();

private:
  /** @brief Something about this other function.
    */
  void foo2();
};
然后在Doxyfile的预定义下定义DOXYGEN_EXTRACT或您喜欢的任何标记

几个限制/问题:

成员在输出中显示为public,而不是private。 您应该记住为下一个成员显式指定访问说明符。
在我的应用程序中,我有成千上万的私人成员,我只想提取其中的一小部分。恐怕在我不希望包含的条件中添加条件是不实际的。您可以在单个条件变量下根据需要将任意多个私人成员分组。如果它们没有像第一次记录的那样以任何特定的顺序排列,那么是的,这将不太实际。另一种方法是不在您不希望记录的成员上包含doxygen样式的文档,您可以使用常规注释并指定HIDE_UNDOC_members=YES,除非这也是一个选项。