C和doxygen - 删除可变文档的副本

时间:2015-01-08 17:00:09

标签: c doxygen duplicate-removal doxygen-addtogroup

我用doxygen记录我的C代码。为了更好的可读性,我将每个.c / .h文件对(有时还包含更多文件)的文档分组为defgroupaddtogroup(请参阅doxygen in c: grouping of defines)。 文件页面看起来很好,但在组/模块页面上,所有变量文档都加倍。每个变量都有2个条目,它们在头文件中声明(带有extern)并在.c文件中定义(在摘要和描述部分中)。功能和其他一切只列出一次......

如何摆脱组/模块页面上的douplicate变量文档?

我的源文件如下所示: .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
}

/// @}

2 个答案:

答案 0 :(得分:2)

无法真正解决问题但是找到了一个解决方案: 我使用INPUT_FILTER选项和grep -Eve "extern"(cygwin)来排序所有带有“extern”函数或变量声明的行。 因为我只记录实际的函数实现和变量定义,所以前面的“extern”都没有任何文档,并且可以删除doxygen。 这确实也删除了doxygen输出中变量的所有重复条目。

答案 1 :(得分:0)

与其在INPUT_FILTERsed命令中使用grep配置值(在Linux上运行良好,在Windows上需要Cygwin或MSYS2,并且速度较慢...),我目前正在使用以下黑客:

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

通过这种方式,可以使用C ++注释禁用以extern开头的任何行。