3

我正在用 doxygen 记录我的 C 代码。为了更好的可读性,我将每个 .c/.h 文件对(有时还有更多文件)的文档用defgroupand分组addtogroup(参见doxygen in c: grouping of defined)。文件页面看起来不错,但在组/模块页面上,所有变量文档都翻了一番。在头文件中声明(使用 extern)并在 .c 文件中(在摘要和描述部分中)定义的每个变量都有 2 个条目。函数和其他所有内容只列出一次......

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

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

/// @}
4

2 回答 2

2

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

于 2015-01-30T15:00:13.143 回答
0

而不是使用INPUT_FILTER配置值sedgrep命令(在 Linux 上运行良好,在 Windows 上这需要 Cygwin 或 MSYS2,而且速度较慢......),我目前正在使用以下 hack:

  • PREDEFINED = extern=//
  • EXPAND_AS_DEFINED = extern

这样,任何以开头的行都extern将使用 C++ 注释禁用。

于 2019-07-14T18:49:08.033 回答