让doxygen知道cpp中的命名空间

Having doxygen aware of namespace in cpp

本文关键字:命名空间 cpp doxygen 知道      更新时间:2023-10-16

我们有一个c++项目,我们使用doxygen对其进行文档记录,只在类的头中放入doxygen注释,我们在cpp中对静态函数进行文档记录。

我们的doxygen配置文件获取项目中的任何头/hpp(/eimplementation/cpp(文件。此外,我们有相当多的独立组件(和外部组件(,我们在名称空间中隔离这些组件。

该项目是以我们使用多态性的方式完成的(由于广泛使用代理模式(

由于这是一种常见的做法,我们禁止在头中使用指令,并在实现文件中使用它。

通常,我们在标题中有:

/**
 * @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意识到"使用"指令吗?

编辑

  • 坏消息,似乎在bug跟踪器上打开:https://bugzilla.gnome.org/show_bug.cgi?id=617285,https://bugzilla.gnome.org/show_bug.cgi?id=154880:看起来我在寻找一个变通方法,而不是一个干净的解决方案

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