27

我在使用 Doxygen 识别名称空间和模块时遇到问题。我相信问题围绕着是将 放在\addtogroup命名空间内还是命名空间外。

示例 1,在命名空间之外:

/*!
 *  \addtogroup Records
 *  @{
 */

//! Generic record interfaces and implementations
namespace Records
{

  //! Describes the record interface  
  class Interface;

} // End namespace Records

/*! @} End of Doxygen Groups*/

示例 2 - 在命名空间内

//! Generic record interfaces and implementations
namespace Records
{
/*!
 *  \addtogroup Records
 *  @{
 */


  //! Describes the record interface  
  class Interface;

/*! @} End of Doxygen Groups*/

} // End namespace Records

我希望namespace Records出现在 Doxygen命名空间选项卡下,并间接出现在模块选项卡下。单击Namespaces页面中的项目应生成一个包含Records::Interface. 单击“模块”选项卡中的项目也应生成一个包含Records::Interface.

在我的 Doxygen 文档中,我在模块中的命名空间选项卡中缺少项目,反之亦然,这是由于这种困境导致我的不一致。

那么哪个是正确的方法,示例 1 或示例 2?{Doxygen 手册对此主题并不清楚。}
Doxygen:\addtogroup
Doxygen:记录命名空间

4

2 回答 2

33

我已经使用 Doxygen 和两个示例进行了实验,结果如下。示例中的类名已重命名以避免与 Doxygen 混淆。

示例 1,外部命名空间

/*!
 *  \addtogroup Records
 *  @{
 */

//! Generic record interfaces and implementations
namespace Records
{

  //! Describes the record interface  
  class Interface;

} // End namespace Records

/*! @} End of Doxygen Groups*/

多氧结果:

单击模块按钮(在主栏中)。
单击窗口中的“记录”模块。

记录和命名空间屏幕快照

示例 2:在命名空间内(类重命名为字段)

//! Generic record interfaces and implementations
namespace Fields
{
/*!
 *  \addtogroup Fields
 *  @{
 */


  //! Describes the record interface  
  class Interface;

/*! @} End of Doxygen Groups*/

} // End namespace Fields

多氧结果:

单击模块按钮(在主栏中)。
单击窗口中的“记录”模块。

命名空间内的记录和命名空间屏幕快照

概括

Doxygen\addtogroup命令的位置根据它是位于namespace定义之内还是之外,会产生不同的结果。在命名空间之外声明时,Doxygen模块选项卡将显示命名空间,如上面的示例 1 所示。当\addtogroup命令放在命名空间中时,Doxygen模块选项卡将不会显示命名空间,如上面的示例 2 所示。 如果您希望您的命名空间在 Doxygen模块选项卡中列出,请在命名空间之外找到该\addtogroup命令。

于 2010-03-02T19:48:09.430 回答
5

作为替代方案,您还可以在命名空间文档中使用:\ingroupRecords

/**
 * \defgroup Records Title for records module
 * @brief Short doc of Records
 *
 * Long doc of Records.
 */

/**
 * @brief Generic record interfaces and implementations
 *
 * \ingroup Records
 */
namespace Records {
    /// Describes the record interface  
    class Interface;

} /* namespace Records */
于 2016-11-24T10:02:37.117 回答