Doxygen` @ code`块中的链接有时会丢失

问题描述 投票:4回答:1

我注意到当构造函数接受参数时,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;
}
c++ doxygen
1个回答
1
投票

我认为这是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识别为变量而不是函数。

© www.soinside.com 2019 - 2024. All rights reserved.