【问题标题】:Having doxygen aware of namespace in cpp让 doxygen 知道 cpp 中的命名空间
【发布时间】: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 了解“使用”指令吗?

编辑

【问题讨论】:

  • 一般来说,如果您想对 C++ 代码进行名称准确的查找,您需要一个完整的 C++ 前端。 AFAICT,Doxygen 没有完整的 C++ 端。 (正因为如此,我一直想知道 C++ 用户怎么会如此迷恋 Doxygen;没有更好的东西吗?)如果你幸运的话,你会找到解决特殊情况的方法。
  • 绝对没有更好的。这个是广泛可用的,并且也处理 C ......
  • 您应该发布您的编辑作为答案并接受它,至少在错误修复之前。
  • 我仍在寻找解决方法,因此我将问题保持开放。如果没有人可以提供解决方法,我将关闭并添加答案
  • 感谢您提出问题并指出错误。我在这里遇到了非常相似的问题,但我想没有解决方案......

标签: c++ doxygen


【解决方案1】:

未找到解决方法,我们恢复为在实现中使用完整命名空间以与标头定义完全匹配。将其标记为已关闭,我的损失:-( 在问题中看到 cmets / edit 可能会对读者有所帮助

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多