在Doxygen中处理两个具有相同名称的不同函数

Mat*_*ský 6 c documentation doxygen

我有一个C项目,它包含两个具有相同名称的函数,但每个函数都位于不同的组/模块(@defgroup)中.

这些函数每个都编译成一个不同的二进制文件,但我需要文档密切交叉引用,所以我需要@ref从彼此的模块中引用()这些函数(以及其他地方).

当我做简单时@ref name-of-the-function,它总是链接到文件树中较早的文件.我怎样才能链接到另一个?

sle*_*ske 5

据我所知:doxygen 的自动链接不支持具有多个同名功能。

如果有多个具有相同名称的函数/方法,doxygen 将简单地链接它找到的第一个函数/方法,如问题中所述。调用图也将不正确。这似乎适用于所有语言,而不仅仅是 C。

这已被多次报告为错误:

doxygen 文档中的“已知问题”部分也描述了类似的问题:

如果类 A 已具有名称为 f 的成员且参数列表相同,则无法使用 \relates 或 \relatesalso 命令在类 A 中插入非成员函数 f。


有一些希望;有人提出了一个补丁来更好地处理同名函数: #4365 getDefs failed to resolve local function names if same global name exist

此补丁实现了以下两种解决重复名称的策略。首先,是在当前文件中定义的名称,使用本地名称。其次尝试使用原型定义匹配名称。

这将部分解决问题。不幸的是,该票自 2012 年以来就没有任何活动......


Jör*_*yer 1

这对你有用吗?

该示例被精简为两个文件acbc,只有一个函数(冲突)函数。

文件交流

/**
 * \defgroup agroup Group A
 */

/** 
 * the function in a, 
 * see also \link b.c myfunc() \endlink the other one 
 * \ingroup agroup
 */
void myfunc() {
    ;
}
Run Code Online (Sandbox Code Playgroud)

文件bc

/**
 * \defgroup bgroup Group B
 */

/** 
 * the function in b, 
 * see also \link a.c myfunc() \endlink the other one 
 * \ingroup bgroup
 */
void myfunc() {
    ;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,myfunc()有名称冲突。我在文档中放置了另一个函数的链接。

我在函数名称前面添加了filename

我用doxygen编译了它,并且链接有效(它们从一个函数的每个文档链接到另一个函数)。