让doxygen识别cpp中的命名空间

8
我们有一个C++项目,使用Doxygen进行文档编写。我们只在类的头文件中放置Doxygen注释,并在.cpp文件中记录静态函数。
我们的Doxygen配置文件检索项目中的任何头文件(.hpp)/实现(.cpp)文件。此外,我们有许多独立组件(和外部文件),我们将其隔离在命名空间中。
由于广泛使用代理模式,该项目采用多态的方式完成。
作为一种常见做法,我们不允许在头文件中使用using指令,而是在实现文件中使用它。
通常,我们的头文件包含以下内容:
/**
 * @brief
 *   test from A
 */
void f(N1::N2::A);
/**
 * @brief
 *   test from A
 */
void f(N1::N2::B);

在实现中,我们有

using namespace N1::N2;

void f(A) { }
void f(B) { }

当运行doxygen时,它似乎很混乱并产生错误消息:
warning: no uniquely matching class member found for f(A)
possible candidates:
void f(N1::N2::A)
void f(N1::N2::B)

有什么办法可以消除这些错误并使Doxygen意识到"using"指令吗?
编辑:
坏消息是,在错误跟踪器上打开了此问题:https://bugzilla.gnome.org/show_bug.cgi?id=617285https://bugzilla.gnome.org/show_bug.cgi?id=154880:看起来我正在寻找一个变通方法而不是一个干净的解决方案。

一般而言,如果您希望在C++代码中进行准确的名称查找,则需要完整的C++前端。据我所知,Doxygen没有完整的C++前端。(因此,我一直想知道为什么C++用户会如此着迷于Doxygen;是否缺乏更好的替代品呢?)如果你很幸运,你可能会发现特殊情况的解决方法。 - Ira Baxter
1
缺乏更好的选择,那就用这个吧,它广泛可用并且也涉及到了C语言... - Bruce
你应该将你的编辑作为一个答案发布并接受它,至少在这个 bug 被修复之前。 - Keith Pinson
我仍在寻找解决方法,因此我将保持问题的开放。如果没有人能够提供解决方法,我将关闭并添加一个答案。 - Bruce
感谢您的问题和对错误的指向。我在这里也遇到了非常类似的问题,但是我猜没有解决方案... - Jens
1个回答

0

没有找到解决办法,我们回退到使用完整的命名空间来实现,以精确匹配头文件的定义。将其标记为已关闭,我失败了 :-(
查看问题中的评论/编辑可能有助于读者


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接