C 和 doxygen - 删除变量文档的重复项

C and doxygen - removing duplicates of variable documentation

我正在用 doxygen 记录我的 C 代码。为了更好的可读性,我将每个 .c/.h 文件对(有时还有更多文件)的文档与 defgroupaddtogroup 分组(参见 )。 文件页面看起来不错,但在 group/module 页面上,所有变量文档都加倍了。在头文件中声明(使用 extern)并在 .c 文件中(在摘要和描述部分)定义的每个变量都有 2 个条目。功能和其他一切都只列出一次...

如何删除 group/module 页上重复的变量文档?

我的源文件如下所示: .h 文件:

/** @file
*   blabla
*   @author bla
*/
/// @addtogroup 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
}

/// @}

无法真正解决问题,但找到了解决方法: 我将 INPUT_FILTER 选项与 grep -Eve "extern" (cygwin) 一起使用,以整理出所有带有 "extern" 函数或变量声明的行。 因为我只记录了实际的函数实现和变量定义,所以前面带有 "extern" 的所有内容都没有文档,可以为 doxygen 删除。 这确实也删除了 doxygen 输出中变量的所有重复条目。

而不是将 INPUT_FILTER 配置值与 sedgrep 命令一起使用(在 Linux 上工作正常,在 Windows 上这需要 Cygwin 或MSYS2,而且速度较慢...),我目前正在使用以下技巧:

  • 设置PREDEFINED = extern=//
  • 设置EXPAND_AS_DEFINED = extern

这样任何以 extern 开头的行都会被 C++ 注释禁用。