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

时间:2012-10-24 11:39:52

标签: c++ doxygen

我注意到当构造函数接受参数时,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;
}

1 个答案:

答案 0 :(得分: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识别为变量而不是函数。