【问题标题】:doxygen in c: grouping of definesc中的doxygen:定义分组
【发布时间】:2015-03-06 14:01:44
【问题描述】:

我正在用 doxygen 记录 C 代码。为了使文档更具可读性,我想至少使用@defgroup 和@ingroup 将每个.c/.h 文件对中的代码添加到一个组中。在这些组中,我想使用 @name 块将一些定义组合在一起。

“文件”页面中的结果与我的预期非常接近:文件中记录的所有内容都列在那里,并且或多或少很好地分组。 另一方面,在“模块”页面中,仅列出了函数和变量,并且在第一个 @name 块之前的定义在“变量”下列出。缺少所有其他定义和枚举。 删除 @name 块会列出“变量”下的所有定义/类型定义/枚举。没有自己的宏或枚举部分,也没有在这些页面上进一步分组。

如何获取模块/组页面上列出的组中的所有定义和枚举,例如记录定义/功能等的文件页面?

我使用 doxygen 1.8.9.1 windows 二进制文件。

我的代码如下所示: .h 文件:

/** @file
*   blabla
*   @author bla
*/
/// @ingroup MY_GRP
/// @{
#define SOMEDEF1 1
/// @name Special defs
/// @{
#define SOMEDEF2 2
/// @}
enum someenum {
foo,
bar
};

extern int some_variables;

extern void some_proc(int baz);

/// @}

.c 文件如下所示:

/** @file
 *  blabla
 *  @author bla
 */
/** @defgroup MY_GRP A test group.
  * Description
  */
/// @{
#include "my.h"

/// Important variable.
int some_variable;

/** Important proc
 *  Description
 *  @param baz need this
 */
void some_proc(int baz) {
// code
}

/// @}

我让 doxygen wizzard 生成一个 doxyfile 并且还生成了一个 DoxygenLayout.xml 文件。 在使用布局文件时,我发现组页面上的“定义”标签是空的(它们显然什么都不做),而变量部分中的“定义”是由“成员组”标签生成的......不要知道该怎么做。

非常感谢任何帮助。如果您需要 doxyfile 或其他任何内容,请告诉我。

【问题讨论】:

  • 看看在文件级别使用 addtogroup 是否不能满足您的要求 stackoverflow.com/a/22461669/2344440
  • 澄清一下,您是否也希望对未记录的实体进行分组?如果是这样,您需要进入配置文件或 GUI 中的高级配置并查找名为“提取未记录的实体”的项目。这需要启用。
  • addtogroup 而不是 ingroup 似乎可以解决问题 - 但不知道为什么。需要做更多的测试......而且不:如果 doxygen 将仅记录的实体分组,我会很高兴。到目前为止,它甚至都没有做到这一点。
  • 嗯,差不多了!在头文件中声明并在 c 文件中实现的变量现在在组页面中列出了两次。如何摆脱双打?
  • 如果你在头文件中记录一个声明,然后在 C 文件中记录一个定义,通常 doxygen 会尝试合并这两个文件的文档,因为它们都属于末尾的同一个对象日。当您说在标题中声明时,您的意思是使用外部?您确定要声明它们而不是意外定义它们吗?因为如果你有两个不同范围的定义,doxygen 会生成重复的文档。但是,如果您在包含该标头的 C 文件的标头和文件范围内定义某些内容,则应该会出现链接器错误。

标签: c macros grouping doxygen


【解决方案1】:
猜你喜欢
  • 2016-12-04
  • 2013-02-18
  • 2013-11-15
  • 1970-01-01
  • 2011-04-02
  • 2015-08-28
  • 2015-11-10
  • 2018-08-25
  • 1970-01-01
相关资源
最近更新 更多