【发布时间】:2013-02-25 08:57:47
【问题描述】:
我们有一个使用 doxygen 记录的 c++ 项目,仅将 doxygen cmets 放在类的标头中,我们在 cpp 中记录静态函数。
我们的 doxygen 配置文件收集项目中的任何头文件 /hpp) / implementation /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 了解“使用”指令吗?
编辑
- 坏消息,似乎在错误跟踪器上打开:https://bugzilla.gnome.org/show_bug.cgi?id=617285,https://bugzilla.gnome.org/show_bug.cgi?id=154880:看起来我正在寻找一种解决方法,而不是一个干净的解决方案。
【问题讨论】:
-
一般来说,如果您想对 C++ 代码进行名称准确的查找,您需要一个完整的 C++ 前端。 AFAICT,Doxygen 没有完整的 C++ 端。 (正因为如此,我一直想知道 C++ 用户怎么会如此迷恋 Doxygen;没有更好的东西吗?)如果你幸运的话,你会找到解决特殊情况的方法。
-
绝对没有更好的。这个是广泛可用的,并且也处理 C ......
-
您应该发布您的编辑作为答案并接受它,至少在错误修复之前。
-
我仍在寻找解决方法,因此我将问题保持开放。如果没有人可以提供解决方法,我将关闭并添加答案
-
感谢您提出问题并指出错误。我在这里遇到了非常相似的问题,但我想没有解决方案......