4

我注意到,当默认构造函数没有参数时,Doxygen 可以链接来自实例的成员函数调用,但当构造函数接受参数时无法链接它们。

  • 这是为什么?
  • 是否有在@code/@endcode块中手动添加链接的解决方法?

在下面的示例中:

  • t.foo()-foo()已链接
  • u.foo()-foo()未链接

.

/** @file doxy.cpp */

/** struct T */
struct T {
  /** foo */
  void foo() { }
};

/** struct U */
struct U {
  int a; /**< int a */

  /** U */
  U(int a_) : a(a_) { }

  /** foo */
  void foo() { }
};

/**
 * main
 *
 * @code
 * T t;
 * t.foo();  // foo is linked
 *
 * U u(42);
 * u.foo();  // foo is not linked
 * @endcode
 */
int main()
{
  return 0;
}
4

1 回答 1

2

我认为这是 Doxygen 中一个已知问题的症状。来自http://www.doxygen.nl/manual/trouble.html

在某些情况下,多余的牙套会混淆 doxygen。例如:

void f (int); 

被正确解析为函数声明,但是

const int (a);

也被视为一个名为 int 的函数声明,因为只分析语法,而不分析语义。如果可以检测到多余的大括号,如

int *(a[20]); 

然后 doxygen 将删除大括号并正确解析结果。

所以在这种情况下,我相信:

U u(42);

被解释为函数而不是变量声明。

不幸的是,我不知道在代码块中显式添加链接的任何选项。我发现的唯一解决方法是重组代码,使声明看起来不像 Doxygen 的函数。例如,将变量初始化更改为:

U u = U(42);

允许 Doxygen 将其识别u为变量而不是函数。

于 2012-10-26T04:59:14.697 回答