我用doxygen记录我的C代码。为了更好的可读性,我将每个.c / .h文件对(有时还包含更多文件)的文档分组为defgroup
和addtogroup
(请参阅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
}
/// @}
答案 0 :(得分:2)
无法真正解决问题但是找到了一个解决方案:
我使用INPUT_FILTER
选项和grep -Eve "extern"
(cygwin)来排序所有带有“extern”函数或变量声明的行。
因为我只记录实际的函数实现和变量定义,所以前面的“extern”都没有任何文档,并且可以删除doxygen。
这确实也删除了doxygen输出中变量的所有重复条目。
答案 1 :(得分:0)
与其在INPUT_FILTER
或sed
命令中使用grep
配置值(在Linux上运行良好,在Windows上需要Cygwin或MSYS2,并且速度较慢...),我目前正在使用以下黑客:
PREDEFINED = extern=//
EXPAND_AS_DEFINED = extern
通过这种方式,可以使用C ++注释禁用以extern
开头的任何行。